我试图从mongodb集合中删除一个文档作为属性的文档。 我使用了$ pull和$ unset,它成功地找到并删除文档中的值,方法是将它们设为null,但文档仍然存在。
例如。原始文件
{
_id: 6452725 gsjhye73636,
ItemsArray: [{
_id: 757264 gsjfgs685,
ItemName: "item1",
ItemValue: "value1"
},
{
_id: 757264 gsjfgs686,
ItemName: "item2",
ItemValue: "value2"
},
{
_id: 757264 gsjfgs687,
ItemName: "item3",
ItemValue: "value3"
}
],
OtherProp: "some value"
}
应用$ pull和$ unset删除item2文档后。
{
_id: 6452725 gsjhye73636,
ItemsArray: [{
_id: 757264 gsjfgs685,
ItemName: "item1",
ItemValue: "value1"
},
{
_id: 757264 gsjfgs686,
ItemName: null,
ItemValue: null
},
{
_id: 757264 gsjfgs687,
ItemName: "item3",
ItemValue: "value3"
}
],
OtherProp: "some value"
}
我想要的是:
{
_id: 6452725 gsjhye73636,
ItemsArray: [{
_id: 757264 gsjfgs685,
ItemName: "item1",
ItemValue: "value1"
},
{
_id: 757264 gsjfgs687,
ItemName: "item3",
ItemValue: "value3"
}
],
OtherProp: "some value"
}
答案 0 :(得分:0)
$pull运营商的官方文档末尾有一个非常方便的示例。
对于您的情况,查询将是:
db.mycol.update({},
{$pull: {"ItemsArray": {"ItemName": "item2"}}}
)