【问题标题】:mongodb, get the result line after updatemongodb,获取更新后的结果行
【发布时间】:2012-12-13 01:34:12
【问题描述】:

我正在使用 mongodb、node.js 和 socket.io,我正在尝试减少访问数据库的次数。我需要更新一行;在返回更新的行之后,我就是这样做的:

db.collection('users').update({_id:targetID}, {$set: { 'property': 'value' }}, {safe:true}, function(err, result) {
    db.collection('users').find({_id:targetID}).toArray(function(error, results){
        //a socket.io resend the content
    });
});

它有效,但我真的觉得我在这里迈出了无用的一步。更新函数的回调似乎是一个布尔值。

顺便说一句,有没有比这个更好的文档:http://docs.mongodb.org/manual/applications/update/?我想找到属性和方法的列表。例如{safe:true}。没有它似乎无法正常工作,但我在参考中找不到它。

也许我完全错了,这不是我应该这样做的方式。如果你有更好的主意... :)

【问题讨论】:

  • 你所说的“safe:true”是什么意思似乎不起作用?
  • 我写道:“没有它似乎无法工作”。所以是的,它正在工作,但我不知道它有什么作用。

标签: node.js mongodb socket.io


【解决方案1】:

您可以使用findAndModify 高效地执行此操作:

db.collection('users').findAndModify(
    {_id: targetID}, [], 
    {$set: { 'property': 'value' }}, 
    {new: true}, // Return the updated doc rather than the original
    function(err, result) {
        // result contains the updated document
    }
);

【讨论】:

  • 你是我的救星!我不知道如何阅读文档... findAndModify 和 findAndRemove 对我有很大帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2017-08-16
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多