我正在尝试使用 pymongo 上的 update_one 在我的数据库中创建新闻文档,但他们正在替换数据而不是创建新数据。
遵循我的数据库架构:
{
'id': 123,
'stock': 'Facebook',
'code': 'fb',
'qrtly_result': {
'31/12/2020': {
'item1': 123,
'item2': 123,
'item3': 123,
'item4': 123,
},
}
}
基本我试图在 qrtly_results 中创建新项目,但每次我使用 update_one 尝试添加新结果,update_one 替换数据,这是我尝试使用的命令:
new_result = {
'30/09/2020': {
'item1': 123,
'item2': 123,
'item3': 123,
'item4': 123,
},
}
collection.update_one(
{'stock': 'Facebok'},
{'$set': {'qrtly_result': new_result}},
upsert=True
)
我正在尝试在键“qrtly_results”中创建几个新文档,如下所示:
{
'id': 123,
'stock': 'Facebook',
'code': 'fb',
'qrtly_result': {
'31/12/2020': {...},
'31/09/2020': {...},
'31/03/2020': {...},
'31/12/2019': {...},
'31/09/2019': {...},
}
}
答案 0 :(得分:1)
您可能需要考虑将 qrtly_result
设为数组,因为您的更新类型对于数组要容易得多;如果你想坚持添加对象,你的查询是:
new_result = {
'item1': 123,
'item2': 123,
'item3': 123,
'item4': 123,
}
x = collection.update_one(
{'stock': 'Facebook'},
{'$set': {'qrtly_result.30/09/2020': new_result}},
upsert=True
)