MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Perbarui objek MongoDb dalam array pada kemunculan pertama dari yang terakhir

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 $ operator akan selalu menjadi yang "pertama".

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".




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. ECONNREFUSED kesalahan saat menghubungkan ke mongodb dari node.js

  2. Kamus python:menghapus karakter Anda

  3. Bagaimana cara memanggil db.eval() melalui luwak?

  4. Memantau Server Percona untuk MongoDB - Metrik Utama

  5. Bagaimana Cara Menginstal MongoDB di Sistem Windows?