好吧,我正在尝试换用 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'}
)
有什么建议可以解决这个问题吗?
问候, 费利佩·西德
答案 0 :(得分:0)
首先,key_stock
是您数据库中的一个字符串,但它在您的更新查询中是一个 int。类型对于匹配变量很重要
如果您想替换 qrtly_result
,修复数据类型将起作用。试试吧here
但是,如果您想向 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",
}
}
})
试试here