Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 在嵌套MongoDB调用中,如何确保原子性?_Node.js_Mongodb - Fatal编程技术网

Node.js 在嵌套MongoDB调用中,如何确保原子性?

Node.js 在嵌套MongoDB调用中,如何确保原子性?,node.js,mongodb,Node.js,Mongodb,是否可以通过在第一次更新的回调中调用一个新的更新/删除调用来自动更新/删除MongoDB中的两个文档?在以下情况下,我希望从集合中删除第二个文档,但前提是对第一个文档的更新成功: db.collection.update(conditions1, {$set: set}, function (err,result){ db.collection.remove(conditions2, function(err,doc_num){ db.close();

是否可以通过在第一次更新的回调中调用一个新的更新/删除调用来自动更新/删除MongoDB中的两个文档?在以下情况下,我希望从集合中删除第二个文档,但前提是对第一个文档的更新成功:

db.collection.update(conditions1, {$set: set}, function (err,result){
    db.collection.remove(conditions2, function(err,doc_num){      
        db.close();
    )};
});

我遇到了$isolated query运算符,但据我在文档中了解,该运算符用于对影响多个文档的单个查询执行读/写锁定,在通过第一次文档更新的回调对另一个文档执行更新后,不在一个文档上执行读/写锁定,这正是我想要尝试和完成的。

不,这是不可能的,因为。如文档所述,锁将在单个查询而不是整个事务上获得


您可以通过使用来克服原子性问题。

正如Amir所说的,这是不可能的,但是您可以通过以下方法来模拟mongo中的行为。该链接还链接到如何执行类似回滚的操作