首页 > 解决方案 > 我怎样才能很好地更新 pymongo 上的数据?

问题描述

我插入datamongodb 以像这样使用 pymongo。

data = {
       'page_url': product_link,
       'static': {
           'created_at': datetime.datetime.now(),
           'created_at_gmt': datetime.datetime.now(),       
                        },
       'created_at': datetime.datetime.now(),
       'created_at_gmt': datetime.datetime.now(),
       'updated_at': datetime.datetime.now(),
       'updated_at_gmt': datetime.datetime.now()

db.product.insert_one(data)

然后当我更新时data,我删除了created_at created_at_gmt

data = {
       'page_url': product_link,
       'static': {
                        },
       'updated_at': datetime.datetime.now(),
       'updated_at_gmt': datetime.datetime.now()

db.product.update_one({'page_url': product_link}, {"$set": data}, upsert=True)

但是在我更新它之后,当我在 compass 上检查 db 数据时,没有created_atcreated_at_gmtin static。在static. created_at与静态有created_at_gmt相同的深度。

我不知道为什么会这样……

你能帮助我吗 ?

标签: pymongo

解决方案


您应该只更新您想要在$set阶段中的键。

current_datetime = datetime.datetime.now()

db.product.update_one({
  'page_url': product_link
}, {
  "$set": {
    'updated_at': current_datetime ,
    'updated_at_gmt': current_datetime 
  }
}, upsert=True)

与上面的示例一样,您应该只引用要更新的键。

$unset如果要从 MongoDB 文档中删除键,请查看更新命令。

此外,将datetime值存储在变量中,使其一致。


推荐阅读