MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose updateMany с различни стойности по уникален идентификатор като имейл без цикъл

Можете да използвате Array.map, за да оформите всеки вход за използване с групово записване.

Поведението, което описвате, изглежда използва email поле за идентифициране на всеки документ.

Не сте посочили какво трябва да се случи с други полета в документите. Ако искате да оставите други полета сами, използвайте $set за да премахнете всички полета, които не са споменати във входящите данни, използвайте $replace .

В обвивката това изглежда така:

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

Разгледайте Model.bulkWrite() за пример как да направите това в mongoose.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - Как да дефинирам множество типове данни за поле в Mongoose?

  2. Защо получавам mongoose.connect не е функция, когато се опитвам да се свържа с mongoose?

  3. Golang mongodb агрегиране

  4. mongodump от отдалечен възел - не може да се удостовери чрез механизъм SCRAM-SHA-256

  5. pymongo:MongoClient или Connection