【发布时间】:2020-03-27 12:26:52
【问题描述】:
我正在使用 Python 的 Mongo 库 (pymongo),我的文档如下所示:
{"vendor_id": 12, "title": "xyz", "price": 1499.0, "price_history": [{"date": "2019-12-01", "price": 1890.0}]}
如果存在 id=12 的文档,我想将新的价格对象推送到“price_history”数组。如果不是,我将创建一个与粘贴代码看起来相同的新文档。
看起来很简单,但我检查了多个 stackoverflow 主题和 mongodb 文档,但无法得到它:/
我想出了代码:
db.holidays.update_one(
{"vendor_id": t["vendor_id"]},
{"$push": {"price_history": t["price_history"][0]}},
upsert=True
)
但是当找不到文档时,它只插入 vendor_id 而不是整个文档。
有什么建议吗? 感谢您花时间解决我的问题。
【问题讨论】:
-
当您说 ...看起来与上面粘贴的代码相同... 是否意味着新文档将具有相同的
vendor_id值,@ 987654324@、price等字段? -
是的,我的意思是它只会将整个文档插入到集合中。我正在阅读有关 $setOnInsert 的信息 - 也许这就是我应该走的路?
-
$setOnInsert正是要走的路。
标签: python mongodb mongodb-query pymongo upsert