我正在使用python代码更新与查询匹配的数组中的多个元素。以下是我的文档结构:
doc: {
"userId":327238,
"assessmentId":115513,
"institutionId":1632,
"subjects":[
{"Id":238,"Included":false,"Rank":1},
{"Id":239,"Included":true,"Rank":4},
{"Id":240,"Included":false,"Rank":1},
{"Id":241,"Included":true,"Rank":10}
]
}
我想设置“Rank”:0仅用于包含“Included”的数组元素:false。我尝试了下面的代码,但它设置了“Rank”:所有数组元素都为0
query = {"assessmentId":115513, "institutionId":1632, "subjects":{"$elemMatch":{"Included":false}}}
update = {"$set":{"subjects.$[].Rank":0}}
db.test.update_many(query, update)
任何帮助都将不胜感激。多谢各位
您需要按如下方式使用位置运算符+阵列过滤器:
mongo shell:
python:
解释: 在arrayFilter中定义变量fs.include:false,该变量将用于匹配update$set阶段中的数组对象,并且只有匹配的数组对象的秩将设置为0
相关问题 更多 >
编程相关推荐