我有一个具有以下结构的文档。我想在数组 files 中插入一个新文件,然后将所有其他文件状态设置为“ INACTIVE”。插入后,我正在尝试按照以下代码更新数组的其他文件,但无法匹配。
{
{
"id":"fafsahjaf867rwhrbjw",
"files" : [
{"name": "123", status:"ACTIVE"},
{"name": "124", status:"ACTIVE"},
{"name": "125", status:"ACTIVE"},
{"name": "126", status:"ACTIVE"},
]
},
}
query = bson.M{ "id": productId,
"files": bson.M{
"$not": bson.M{"$elemMatch": fileObj}}}
update = bson.M{
"$set": bson.M{
"files.$.status": "INACTIVE",
},
}
答案 0 :(得分:0)
如果您的Mongo> = 3.6,请参见下面的示例,以编辑除最后一个名称为126以外的所有内容。
db.collection.update(
{ "id" : "fafsahjaf867rwhrbjw", "files.name": "126" },
{ "$set": { "files.$[elem].status": "INACTIVE" } },
{ "arrayFilters": [{ "elem.name": {$ne : "126"} }], "multi": true }
)