Python操作MongoDB如何按嵌套字段条件使用unset删除指定键
问题解答
可以通过unset实现该条件判断逻辑,你只需要在执行更新前增加对应的查询筛选条件,只有满足「item数组中存在promotion字段值为true的元素」的文档才会执行删除item键的操作,无需修改unset本身的逻辑。
适配你当前使用的MongoEngine语法(unset__xxx格式)
给查询增加elemMatch筛选条件,匹配数组中至少有一个元素符合要求:
get_image.objects.filter(item__elemMatch={"promotion": "true"}).update(unset__item=1)
原生PyMongo对应写法
如果你直接调用PyMongo接口,参考代码如下:
# 批量更新所有符合条件的文档 db.你的集合名.update_many( # 筛选条件:item数组存在元素满足promotion为"true" {"item": {"$elemMatch": {"promotion": "true"}}}, # 执行unset删除item键 {"$unset": {"item": ""}} )
注意事项
- 上述示例匹配的是字符串类型的
"true",如果你的promotion字段实际存储的是布尔类型true,请把筛选条件中的"true"修改为布尔值True,避免类型不匹配导致筛选失效 - 如果你只需要更新单个符合条件的文档,把
update_many改为update_one,MongoEngine语法中把update改为update_one即可
内容的提问来源于stack exchange,提问作者jipot
相关产品推荐
相关产品推荐

