Rozumiem, co mówisz, że chcesz dopasować ostatni element w tym przypadku, a właściwie przetworzyć dopasowanie w odwrotnej kolejności. Nie ma możliwości zmiany tego i indeksu przechowywanego w pozycyjnym
Ale możesz zmienić swoje podejście do tego, jako domyślne zachowanie $push
jest "dołączenie" na końcu tablicy. Ale MongoDB 2.6 wprowadził $position
modyfikator, dzięki czemu w rzeczywistości zawsze możesz „dołączyć” do tablicy, co oznacza, że „najstarszy” element znajduje się na końcu.
Weźmy na przykład:
db.artest.update(
{ "array": { "$in": [5] } },
{ "$push": { "array": { "$each": [5], "$position": 0 } }},
{ "upsert": true }
)
db.artest.update(
{ "array": { "$in": [5] } },
{ "$push": { "array": { "$each": [6], "$position": 0 } }},
{ "upsert": true }
)
Powoduje to powstanie dokumentu, który jest "odwrotnością" normalnego $push
zachowanie:
{ "_id" : ObjectId("53eaf4517d0dc314962c93f4"), "array" : [ 6, 5 ] }
Alternatywnie możesz zastosować $sort
modyfikator podczas aktualizacji dokumentów, aby „uporządkować” elementy tak, aby były odwrócone. Ale może to nie być najlepsza opcja, jeśli przechowywane są zduplikowane wartości.
Więc spójrz na przechowywanie swoich tablic w "odwróconej", jeśli zamierzasz dopasować "najnowsze" elementy "najpierw". Obecnie jest to jedyny sposób na uzyskanie „dopasowania z ostatniego” zachowania.