Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs中的Mongo集合锁_Node.js_Mongodb_Locking - Fatal编程技术网

Node.js nodejs中的Mongo集合锁

Node.js nodejs中的Mongo集合锁,node.js,mongodb,locking,Node.js,Mongodb,Locking,在Nodejs中,如何锁定mongodb集合进行查询和更新,然后释放锁 我的文档将是这样的。 { _id:1, “a”:1, “b”:2, “x1”:0.5 } 这是我的密码 lockCollectionUntilCompleteThisFunction(db, 2, "col1", function () { }); function lockCollectionUntilCompleteThisFunction(db, n, col, callback) { db.collecti

在Nodejs中,如何锁定mongodb集合进行查询和更新,然后释放锁

我的文档将是这样的。

{
_id:1,
“a”:1,
“b”:2,
“x1”:0.5
}

这是我的密码

lockCollectionUntilCompleteThisFunction(db, 2, "col1", function () {
});

function lockCollectionUntilCompleteThisFunction(db, n, col, callback) {
    db.collection(col).findOne({x1: 1}, function (err, doc) {
        if (!err) {
            var a = doc.a;
            var b = doc.b + n;
            var x1 = a / b;
            var updateDoc = {
                b: b,
                x1: x1
            }
            db.collection(col).updateOne({_id: doc._id}, {$set: updateDoc}, function (err) {
                if (!error) {
                    callback(null);
                }
                else {
                    callback(err)
                }
            });
        }
        else {
            callback(err);
        }
    });
}

因此,我需要的是,在执行此函数时,它应该锁定集合。如何实现这一点。

为什么需要锁定完整收集?我不希望其他进程在查找查询和更新查询之间使用此“x1”字段。