我有下面的文档,它有两个数组,一个在另一个里面,
附件数组和附件数组内的文件数组。我想删除一个元素内的文件数组使用此element _id .但它不与我一起工作,我尝试了这段代码,它返回{ n:144,n修改:0,确定:1 }
Invoice.update({}, {
$pull: {
"attachment":
{
"files":
{
$elemMatch:
{ _id: ObjectId("5b7937014b2a961d082de9bf") }
}
}
}
}, { multi: true })
.then(result => {
console.log("delete", result);
});
这就是文档的外观x1c 0d1x
3条答案
按热度按时间kmbjn2e31#
你可以尝试下面的更新查询3.6版本。
如果您是从旧版本升级,请使用
db.adminCommand( { setFeatureCompatibilityVersion: 3.6 or 4.0 depending on your version } )
。unhi4e5o2#
Mongodb 3之前的版本。****
这里只有一个嵌套级别,因此您可以简单地使用
$
位置运算符。适用于Mongodb版本3。6岁及以上
如果你想更新
attachement
数组中的多个元素,你可以使用$[]
所有位置操作符。如果你想更新
attachment
数组中的单个元素,那么你可以使用$[<identifier>]
来识别匹配arrayFilters
条件的数组元素。假设您只想更新
attachment
中的一个元素,该元素的_id
等于ObjectId(5b7934f54b2a961d081de9ab)
i2byvkas3#
我遇到了同样的问题,得到了另一个解决方案: