如何遍历数组并删除基于字段的特定元素。
这是我的布局-位于名为case的集合中:
**集合包含companyID,案例[Array],lastModified **
因此,我将必须使用汇总来展开案例,然后搜索等于“ 17”的案例编号:
db.cases.aggregate([
{ $match: { companyID: 218}},
{ $unwind: '$cases' },
{ $match: {'cases.casenumber': '17'} }
])
返回:
但是现在我只想删除该特定项目。
谢谢。
您可以使用一个updateMany
请求。第一个参数是匹配条件,第二个参数是action。
$ pull是一个特殊的关键字,它将从数组中删除匹配的元素。
db.collection.updateMany({
companyID: 218,
}, {
$pull: {
cases: {
casenumber: 17,
},
},
})
https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
https://docs.mongodb.com/manual/reference/operator/update/pull/
doc中的示例:
db.profiles.update( { _id: 1 }, { $pull: { votes: { $gte: 6 } } } )
我调查了一下,但并没有将其删除-我认为这可能是由于它需要首先展开阵列的事实?它说Acknowledged是正确的,但是matchedCount和modifiedCount是0。哦,以防万一这有所作为,17是一个字符串。我在测试时在它周围加上了
@Andrew我应该重现您的模式以尝试这一模式,很遗憾,我现在没有时间。如果那时没有人回答您的问题,我会稍后处理。
真的很抱歉-这行得通,我忘了更改收藏名称。非常感谢你
大!:)很高兴您能想到这一点