是否可以在mongodb中更新已打开的文档

时间:2014-02-25 15:28:49

标签: javascript mongodb

在JS中,有没有更好的方法来执行以下操作:

我找到一个用户,然后检查密码,然后我希望更新相同用户的文档。

我可以利用已经打开的文档(var doc)进行更新吗?或者按照以下代码执行操作,并在更新时重新搜索name:name。

user_collection.findOne({ name:name }, function(err, doc) {
    if(err) 
        throw err;
    if(doc) {
        // verify doc.password etc
        user_collection.update({ name:name }, {$set: { last_joined:last_joined }}, { upsert:true }, function(err, doc) {
            if(err) {  
                // log error 
            }
        });                 
    }
});

1 个答案:

答案 0 :(得分:0)

是 - 使用save方法。

doc中的文档是数据库中记录的内存副本。如果要修改它然后将其保存到数据库,则需要使用update方法,或使用save(modified_doc)

注意:正如怪异所说,您可能应该使用user_collection.update({ _id: doc._id }, ...)而不是再次搜索name,因为它可能不是唯一的。