【问题标题】:mongodb : using update() to update and get the updated datamongodb:使用 update() 更新并获取更新的数据
【发布时间】:2017-05-23 09:53:33
【问题描述】:

我想更新并获取更新的数据,就像我们为 findByIdAndUpdate 所做的 { new : true } 一样,以防我们需要更新的数据。我们如何使用更新功能来做到这一点。

 mBooking.update(updateDbParams.condition, updateDbParams.update, function(error, resultData) {
    if(error)
      res.json(mResponse.response(null, null, "something went wrong", null));
    else
       {
         console.log(resultData); 
       }
 });

所以 console.log 返回;

    { ok: 1,
  nModified: 1,
  n: 1,
  opTime:
   { ts: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1483945954 },
     t: 1 },
  electionId: 7fffffff0000000000000001 }

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    您可以将findOneAndUpdatenew:true 选项一起使用

    mBooking.findOneAndUpdate(updateDbParams.condition, updateDbParams.update, {new:true}, function(error, resultData) {
        if(error)
          res.json(mResponse.response(null, null, "something went wrong", null));
        else
           {
             console.log(resultData); 
           }
     });
    

    【讨论】:

    • 是的,它工作得很好,而 findAndModify 不工作。谢谢!
    【解决方案2】:

    您可以使用 MongoDB 的findAndModify。我不太确定与此等效的节点驱动程序。

    修改并返回单个文档。默认情况下,返回 文档不包括对更新所做的修改。到 返回包含对更新所做的修改的文档,使用 新选项。 findAndModify() 方法是围绕 findAndModify 命令。

    【讨论】:

      【解决方案3】:

      猫鼬更新函数不返回更新后的文档。这显示为here

      正如它所解释的,mongoose 的 findByIdAndUpdate 函数和 { new: true } 是最好的选择。还显示了 findById -> save 的较长版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-08
        • 2013-09-30
        • 1970-01-01
        • 2018-10-11
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多