Saya mengerti apa yang Anda katakan bahwa Anda ingin mencocokkan elemen terakhir dalam kasus ini atau sebenarnya memproses kecocokan dalam urutan terbalik. Tidak ada cara untuk mengubah ini dan indeks disimpan di kode
Tetapi Anda dapat mengubah pendekatan Anda untuk ini, sebagai perilaku default $push
adalah untuk "menambahkan" ke akhir array. Tetapi MongoDB 2.6 memperkenalkan $position
pengubah sehingga Anda sebenarnya dapat selalu "menyimpan sebelumnya" ke array yang berarti item "tertua" Anda ada di akhir.
Ambil contoh ini:
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 }
)
Ini menghasilkan dokumen yang merupakan "kebalikan" dari $push
normal normal perilaku:
{ "_id" : ObjectId("53eaf4517d0dc314962c93f4"), "array" : [ 6, 5 ] }
Sebagai alternatif, Anda dapat menerapkan $sort
pengubah saat memperbarui dokumen Anda untuk "memesan" elemen sehingga terbalik. Tapi itu mungkin bukan pilihan terbaik jika nilai duplikat disimpan.
Jadi lihatlah untuk menyimpan array Anda di "terbalik" jika Anda ingin mencocokkan item "terbaru" "pertama". Saat ini, itulah satu-satunya cara Anda untuk mendapatkan perilaku "cocok dari yang terakhir".