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

Pembaruan luwak Banyak dengan nilai berbeda dengan id unik seperti email tanpa loop

Anda dapat menggunakan Array.map untuk membentuk setiap input untuk digunakan dengan penulisan massal.

Perilaku yang Anda gambarkan tampaknya menggunakan email untuk mengidentifikasi setiap dokumen.

Anda tidak menunjukkan apa yang seharusnya terjadi dengan bidang lain dalam dokumen. Jika Anda ingin membiarkan bidang lain saja, gunakan $set untuk menghapus bidang yang tidak disebutkan dalam data yang masuk, gunakan $replace .

Di shell ini terlihat seperti:

PRIMARY> db.users.find()
{ "_id" : 1, "email" : "[email protected]", "name" : "one" }
{ "_id" : 2, "email" : "[email protected]", "name" : "two" }
{ "_id" : 3, "email" : "[email protected]", "name" : "three" }

PRIMARY> let users = [     
  { email: "[email protected]", name: "oneeee" },       
  { email: "[email protected]", name: "twoooo" },       
  { email: "[email protected]", name: "three" },       
  { email: "[email protected]", name: "four" }   
]

PRIMARY> let bulkUpdate = db.users.initializeUnorderedBulkOp()

PRIMARY> users.forEach(u => bulkUpdate.find({email:u.email}).upsert().update({$set:u}))

PRIMARY> bulkUpdate.execute()
BulkWriteResult({
    "writeErrors" : [ ],
    "writeConcernErrors" : [ ],
    "nInserted" : 0,
    "nUpserted" : 1,
    "nMatched" : 3,
    "nModified" : 2,
    "nRemoved" : 0,
    "upserted" : [
        {
            "index" : 3,
            "_id" : ObjectId("5f5e79ff28ee536df4c4a88e")
        }
    ]
})

PRIMARY> db.users.find()
{ "_id" : 1, "email" : "[email protected]", "name" : "oneeee" }
{ "_id" : 2, "email" : "[email protected]", "name" : "twoooo" }
{ "_id" : 3, "email" : "[email protected]", "name" : "three" }
{ "_id" : ObjectId("5f5e79ff28ee536df4c4a88e"), "email" : "[email protected]", "name" : "four" }

Lihat Model.bulkWrite() untuk contoh cara melakukannya di luwak.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah ada cara untuk membatasi jumlah catatan dalam koleksi tertentu?

  2. Permintaan mengembalikan hasil yang salah menggunakan driver mongdb erlang?

  3. Bagaimana cara membuat kursor tailable di MongoDB shell?

  4. Meteor - merender nama pemilik dalam daftar objek

  5. MongoDB:apakah aman menggunakan ID dokumen di depan umum?