我的 MongoDB 数据库中的产品具有以下结构:
product_1 = {
'name':'...',
'logo':'...',
'nutrition':'...',
'brand':{
'name':'...',
'logo':'...'
},
'stores':{[
'store_id':...,
'url':'...',
'prices':{[
'date':...,
'price':...
]}
]}
})
我的pymongo
脚本从一个商店转到另一个商店,我尝试做以下事情:
- 如果产品不在数据库中:使用当前 store_id 的当前价格和日期添加有关产品的所有信息。
- 如果产品在数据库中,但我没有当前 stroe 的任何条目:添加一个
stores
包含当前价格、日期和 store_id 的条目。 - 如果产品在数据库中,并且我有当前商店的价格条目,但当前价格不一样:为当前 store_id 添加一个带有新日期和价格的新条目。
是否可以在一个请求中完成所有操作?现在我一直在尝试以下方法,但并不真正知道如何处理stores
和prices
案例。
也许这不是构建我的数据库的最佳方式,我愿意接受建议。
db.find_and_modify(
query={'$and':[
{'name':product['name']},
{'stores':{'$in':product['store_id']}}
]},
update={
'$setOnInsert':{
'name':product['product_name'],
'logo':product['product_logo'],
'brand':product['brand'],
[something for stores and prices ?]
},
},
upsert=True
)