如何更新多个文件?

时间:2019-05-03 05:08:52

标签: node.js mongodb mongoose mongodb-query

我想更新多个文档。
我当前的文档,
记录帐户

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

我需要下面的输出,
使用不同的 _id 更新联系人数组。
记录帐户

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

3 个答案:

答案 0 :(得分:2)

使用r10$addToSet通过$push推送ID。

答案 1 :(得分:2)

您可以对upsert使用更新。它将更新该文档(如果存在),否则将创建一个新文档。 例如:

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

这只是参考。相应地修改您的使用。

答案 2 :(得分:0)

您可以使用Bulk.find.update()方法更新所有匹配的文档。 例: 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();