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

Tarik dan tambahkan keset secara bersamaan dengan mongo

Kesalahannya cukup banyak karena Anda tidak dapat bertindak pada dua hal dari "jalur" yang sama dalam operasi pembaruan yang sama. Kedua operator yang Anda gunakan tidak memproses secara berurutan seperti yang Anda kira.

Anda dapat melakukan ini dengan "berurutan" seperti yang mungkin Anda dapatkan dengan API operasi "massal" atau bentuk pembaruan "massal" lainnya. Tentu saja dengan alasan, dan juga sebaliknya:

var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags":  2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });

bulk.execute();

Bukan jaminan bahwa tidak ada hal lain yang akan mencoba untuk memodifikasi, tetapi itu sedekat yang akan Anda dapatkan saat ini.

Lihat juga perintah "perbarui" mentah dengan banyak dokumen.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Diberikan daftar id, apa cara terbaik untuk menanyakan id mana yang tidak ada dalam koleksi?

  2. MongoDB - dapatkan dokumen dengan atribut maksimal per grup dalam koleksi

  3. MongoDB $dateToParts

  4. Apa perbedaan antara menyimpan dan menyisipkan di Mongo DB?

  5. Cara membuat pengguna di mongodb dengan docker-compose