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
如何在mongodb文档上执行大量操作?_Mongodb_Tornado - Fatal编程技术网

如何在mongodb文档上执行大量操作?

如何在mongodb文档上执行大量操作?,mongodb,tornado,Mongodb,Tornado,这是我的模式: "_id" : "tofla@darhoum.dz" "modif" : 1 "prs" : { "pass" : "sdfdsf" } "reset" : [ { "code" : "1680" "timr" : "AQQOAAMGCQMcBgodAAYYAgIMDAkLBAEeAAcNAAEG" } ] 我想在同一行代码中执行大量操作 yield tornado.gen.Task(db.users.update, {"_id":email}, {"$set":{"pr

这是我的模式:

"_id" : "tofla@darhoum.dz"

"modif" : 1

"prs" :
{
"pass" : "sdfdsf"
}

"reset" :
[
{
"code" : "1680"
"timr" : "AQQOAAMGCQMcBgodAAYYAgIMDAkLBAEeAAcNAAEG"
}
]
我想在同一行代码中执行大量操作

yield tornado.gen.Task(db.users.update, {"_id":email}, {"$set":{"prs.pass":password}}, {"$inc":{"modif":1}}, {"$pop":{"reset":1}})
我得到了这个错误:

assert isinstance(upsert, bool), "upsert must be an instance of bool"
AssertionError: upsert must be an instance of bool
但当我把手术分成三部分时,它就起作用了

yield tornado.gen.Task(db.users.update, {"_id":email}, {"$set":{"prs.pass":password}})
yield tornado.gen.Task(db.users.update, {"_id":email}, {"$pop":{"reset":1}})
yield tornado.gen.Task(db.users.update, {"_id":email}, {"$inc":{"modif":1}})
我发现但认为异步调用中的情况不同,这是mongodb锁吗

更新:尝试此操作并成功:

yield [tornado.gen.Task(db.users.update, {"_id":email}, {"$set":{"prs.pass":password}}),
      tornado.gen.Task(db.users.update, {"_id": email}, {"$pop":{"reset":1}}),
      tornado.gen.Task(db.users.update, {"_id":email}, {"$inc":{"modif":1}})]

但是是否存在危险?

您可以在更新的
文档
参数提供的
目录中传递多个运算符:

yield tornado.gen.Task(db.users.update, {"_id":email}, {"$set":{"prs.pass":password}, "$inc":{"modif":1}, "$pop":{"reset":1}})