简体   繁体   English

如何更新多个文件?

[英]How to update multiple documents?

I want to update multiple documents. 我想更新多个文档。
My current Document, 我目前的文件,
Document Account 单据帐户

{
    "_id" : "5cbd96aca1a6363473d4g8745",
    "contact" : [
         "5cbd96aca1a6363473d4a968",
    ]
},
{
    "_id" : "5cbd96aca1a6363473d4g8746",
    "contact" : [             
         "5cbd96aca1a6363473d4z7632",
    ]
}

I need below output, 我需要下面的输出,
update contact array with different _id . 使用不同的_id更新联系人数组。
Document Account 单据帐户

{
    "_id" : "5cbd96aca1a6363473d4g8745",
    "contact" : [
         "5c98833f98770728a7047f1a",
         "5cbd96aca1a6363473d4a968",
    ]
},
{
    "_id" : "5cbd96aca1a6363473d4g8746",
    "contact" : [     
         "5caddf78b8c0645402090536",        
         "5cbd96aca1a6363473d4z763",
    ]
}

使用$addToSet$push通过bulk update推送ID。

You can use update with upsert. 您可以将更新与upsert一起使用。 It will update the doc if exist and if not then it will create new one. 它将更新该文档(如果存在),否则将创建一个新文档。 for example: 例如:

//Make a obj to set
var contacts = {
  id: req.body.id,
  contactIds: req.body.contactIds,
};

req.app.db.models.ModelsName.update(
{
//if you want multiple fields to be update
  $and: [{ id: contacts.id }, { contactIds: { $in: contacts.contactIds } }]
},

//Set the above obj 
{ $set: contacts },
{ upsert: true },
(err, result) => {
  if (err) {
    console.log(err.message)
  }
  console.log("Updated successfully")
})

This is just a reference. 这只是参考。 Modify accordingly your use. 相应地修改您的使用。

You can use Bulk.find.update() method to update all matching documents. 您可以使用Bulk.find.update()方法更新所有匹配的文档。 example: var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } ); bulk.find( { item: null } ).update( { $set: { item: "TBD" } } ); bulk.execute(); 示例: var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } ); bulk.find( { item: null } ).update( { $set: { item: "TBD" } } ); bulk.execute(); var bulk = db.items.initializeUnorderedBulkOp(); bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } ); bulk.find( { item: null } ).update( { $set: { item: "TBD" } } ); bulk.execute();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM