【问题标题】:MongoDb update by replacing the document while using update operation ($currentDate)[pymongo]MongoDb 通过在使用更新操作时替换文档来更新 ($currentDate)[pymongo]
【发布时间】:2015-05-27 11:30:59
【问题描述】:

我在 python 中使用 pymongo 我有一个这样的 mongodb 文档

{u'_id': ObjectId('55110d55a5bd910f2513fc91'), u'ghi': u'jkl'}

我想通过替换来更新文档

db['table_name'].update({'ghi':'jkl'},{'ghio':'jkl'}, True)

问题是我想将$currentDate 与更新查询一起使用,因为我需要在文档中添加更新时间。我该怎么做?

这是我目前尝试过的

db['table_name'].update({'ghi':'jkl'},{'$set':{'ghik':'jkl'}, '$currentDate':{'date':True}}, True)

上述代码的问题是我不想使用$set,因为它会保留我不需要的其他字段。

db['table_name'].update({'ghi':'jkl'},{'$set':{'ghik':'jkl'}, '$unset':{'ghi':True}, '$currentDate':{'date':True}}, True)

上面的代码有效,但我想知道是否有更好的方法来做到这一点。

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    currentDate 仅适用于 $set 等更新运算符,不适用于完整文档更新。正如您所指出的,您可以使用$unset 更新,虽然这只会清除您特别命名的字段,但您可以在客户端设置时间戳

    db.test.update({ "ghi" : "jkl" }, { "ghio" : "jkl", "date" : datetime.today() })
    

    或者你可以做两次更新

    db.test.update({ "ghi" : "jkl" }, { "ghio" : "jkl" })
    db.test.update({ "ghio" : "jkl" }, { "$currentDate" : { "date" : true } })
    

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 2021-11-30
      • 2015-08-27
      • 2019-03-12
      • 2015-11-18
      • 2016-04-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      相关资源
      最近更新 更多