繁体   English   中英

使用 Pymongo 更新文档

[英]Update Document with Pymongo

好吧,我正在尝试换用 MonogDB,但我在这里遇到了一个与 PYMONGO 的愚蠢问题,我已经在这里尝试了几件事,并且已经花了半天的时间试图弄清楚如何解决这个问题。

正如我上面所说,这是对 CRUD 操作的基本疑问,我正在尝试通过 MongoDB 更新文档。

数据库内部文档的结构是:


{
_id: 123456,
key_stock: '756159'
stock: 'abc',
code: 'cba',
qrtly_result: {
      '30/01/2000': {
           'item1': '123',
           'item2': '321',
           'item3': '987',
           }
      }
}

然后我尝试以这种方式更新此文档:

# Connect @ DB:
client = MongoClient(connect_db.uri)
db = client.get_database(connect_db.data_base)
collection = db[connect_db.collection]


# New DICT
result = {
   '30/09/2020':{
       'item1': '123',
       'item2': '321',
       'item3': '987',
   },
   '30/06/2020':{
       'item1': '123',
       'item2': '321',
       'item3': '987',
   },    
}



# Update @ DB:
collection.update_one(
    {'key_stock': 756159},
    {'$set': {'qrtly_result': result}}
)


# If i use this way all doc going to root of the document
# but i need this new dict go for "qrtly_results"


collection.update_one(
    {'key_stock': 756159},
    {'$set': 'result'}
)

任何建议如何解决这个问题?

问候,费利佩·西德

首先, key_stock是数据库中的字符串,但它是更新查询中的 int。 类型对于匹配变量很重要

如果要替换qrtly_result ,修复数据类型将有效。 在这里试试

但是,如果您想向qrtly_result添加值,您的查询应该如下所示:

db.collection.update({
  "key_stock": 756159
},
{
  "$set": {
    "qrtly_result.30/09/2020": {
      "item1": "123",
      "item2": "321",
      "item3": "987",
      
    },
    "qrtly_result.30/06/2020": {
      "item1": "123",
      "item2": "321",
      "item3": "987",
      
    }
  }
})

在这里试试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM