如果要将文档的值设置为任意值,可以使用$
set语法。如果该属性已经存在于文档中,则将更新值;如果不存在,则将创建该值。如果您需要像描述的那样在字典中设置单个值,则可以使用点表示法来访问子值。
如果p是检索到的对象:
existing = p['d']['a']
对于pymongo版本 <3.0
db.ProductData.update({ '_id': p['_id']},{ '$set': { 'd.a': existing + 1 }}, upsert=False, multi=False)
对于pymongo版本 > = 3.0
db.ProductData.update_one({ '_id': p['_id']},{ '$set': { 'd.a': existing + 1 }}, upsert=False)
但是,如果只需要增加该值,则当多个请求可以同时运行时,此方法可能会带来问题。相反,您应该使用$ inc语法:
对于 <3.0的pymongo版本:
db.ProductData.update({ '_id': p['_id']},{ '$inc': { 'd.a': 1 }}, upsert=False, multi=False)
对于pymongo版本 > = 3.0:
db.ProductData.update_one({ '_id': p['_id']},{ '$inc': { 'd.a': 1 }}, upsert=False)
这样可以确保您的增量将始终如一。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)