MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongoose update Nhiều giá trị khác nhau theo id duy nhất như email không có vòng lặp

Bạn có thể sử dụng Array.map để định hình từng đầu vào để sử dụng với việc ghi hàng loạt.

Hành vi bạn đang mô tả dường như đang sử dụng email trường để xác định từng tài liệu.

Bạn đã không chỉ ra điều gì sẽ xảy ra với các trường khác trong tài liệu. Nếu bạn muốn để nguyên các trường khác, hãy sử dụng $set để xóa bất kỳ trường nào không được đề cập trong dữ liệu đến, hãy sử dụng $replace .

Trong shell, nó trông giống như:

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

Hãy xem Model.bulkWrite () để biết ví dụ về cách thực hiện điều này trong mongoose.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Thời gian sống trong mongodb, mongoose không hoạt động. Tài liệu không bị xóa

  2. Sự cố với cài đặt Mongo DB trên Windows 8.1

  3. Khởi động PHP Không thể tải thư viện động php_mongo.dll

  4. Mongodb repica đặt cấu hình trong một tệp thuộc tính

  5. Nơi lưu trữ MongoClient ở Django