如何让Mongo findOneAndModify只有一个文档?

时间:2014-12-27 19:31:05

标签: mongodb

文档指出,如果适用,findAndModify将返回多个查询。

如何找到一个文档并在一次通话中更新?

1 个答案:

答案 0 :(得分:0)

您可以使用:

db.coll.find({query}).limit(1).forEach(function(item)
{
   db.coll.findAndModify({_id : item._id}, update});
})

db.coll.find只会找到一个文档,您可以对其进行修改。

db.coll.findOne({query})真的是db.coll.find({query}),语法如下,在mongo中没有性能优势。

// findOne() method  body. it uses find() method in it
function (query, fields, options) {
    var cursor = this.find(query, fields, -1, 0, 0, options);
    if (!cursor.hasNext()) {
        return null;
    }
    var ret = cursor.next();
    if (cursor.hasNext()) {
        throw "findOne has more than 1 result!";
    }
    if (ret.$err) {
        throw "error " + tojson(ret);
    }
    return ret;
}