【问题标题】:How to update multiple documents?如何更新多个文档?
【发布时间】:2019-05-03 14:02:46
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您想在更新值时将 ID 推送到数组中?
  • 是的,我想在数组中推送 _ids
  • @ManojGhediya 使用$addToSet$push 通过批量更新推送ID。
  • @ManojGhediya 如果您想一次更新多个文档。由于您需要搜索多个文档并进行更新。

标签: node.js mongodb mongoose mongodb-query


【解决方案1】:

使用$addToSet$push 推送带有bulk update 的id。

【讨论】:

    【解决方案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")
    })
    

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

    【讨论】:

      【解决方案3】:

      您可以使用 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();

      【讨论】:

        猜你喜欢
        • 2020-04-20
        • 2020-04-17
        • 2015-02-19
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        • 2017-11-05
        相关资源
        最近更新 更多