我正在尝试删除作为文档字段的子属性的数组中的条目。 文档的数据如下所示:
{
_id: 'user1',
feature: {
enabled: true,
history: [
{
_id: 'abc123'
...
}
]
},
...
}
由于某种原因,我无法使用$ pull删除该元素,并且不确定什么地方出错。
我看过official docs for $pull
,这个well-known answer以及this one和another。
我尝试了以下查询
db.getCollection('userData').update({ _id:'user1' }, {
$pull: {
'feature.history': { _id: 'abc123' }
}
})
,它无效。我已经仔细检查过_id
,这是正确的匹配。我还尝试过基于同一条目进行过滤,以为我需要定位要删除的数据:
db.getCollection('userData')
.update({ _id: 'user1', 'feature.history': { _id: 'abc123' }, { ... })
到目前为止没有运气
答案 0 :(得分:1)
您需要将id
强制转换为猫鼬ObjectId
db.getCollection('userData').update(
{ "_id": "user1" },
{ "$pull": { "feature.history": { "_id": mongoose.Types.ObjectId(your_id) } }
})
答案 1 :(得分:0)
db.getCollection('userData').update({ _id:'user1', "feature.history._id" : "abc123" }, {
$pull: {
'feature.history.$._id': 'abc123'
}
})