从mongodb中的文档数组中删除完整的文档

时间:2017-04-22 04:04:19

标签: mongodb mongoose

我试图从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"

}

1 个答案:

答案 0 :(得分:0)

$pull运营商的官方文档末尾有一个非常方便的示例。

对于您的情况,查询将是:

db.mycol.update({}, 
                {$pull: {"ItemsArray": {"ItemName": "item2"}}}
                )