我的文件如下:
{
_id: ObjectId,
name: 'String',
description: 'String',
articles: [
{ reference: ObjectId, title: 'String', digest: 'String', content: '...' },
{ reference: ObjectId, title: 'String', digest: 'String', content: '...' },
{ reference: ObjectId, title: 'String', digest: 'String', content: '...' },
{ reference: ObjectId, title: 'String', digest: 'String', content: '...' },
...
]
}
我只想从此文档中删除一篇具有ObjectId aid
的特定文章。所以我将方法与mongoose
:
Model.update({
_id: 'the document ObjectId',
}, {
$pull: {
articles: {
$elemMatch: {
reference: aid,
},
},
},
});
结果是:
{n: 1, nModified: 1, ok: 1}
但是文件的变化与我的期望不同:
{
_id: ObjectId,
name: 'String',
description: 'String',
articles: [],
}
我想知道为什么以及如何删除我期望的特定文章。
答案 0 :(得分:2)
您可以使用$pull
运算符以下列方式从mongodb中删除数组中的对象:
Model.findOneAndUpdate({_id: "the document ObjectId",{$pull: {arrayName: {"element Name": "element value"}}}})
答案 1 :(得分:1)
试试这个
Model.update({
_id: 'the document ObjectId',
}, {
$pull: {
articles: { "reference" : aid}
}
});