【问题标题】:how can i do lot of operation on mongodb document?如何对 mongodb 文档进行大量操作?
【发布时间】:2013-02-10 23:28:31
【问题描述】:

这是我的架构:

"_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}})

我找到了this,但认为在异步调用中不是一回事,这是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}})]

但是危险吗?

【问题讨论】:

    标签: mongodb tornado


    【解决方案1】:

    您可以在提供给更新的document 参数的dict 中传递多个运算符:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      相关资源
      最近更新 更多