2017-04-22 18 views
0

文書の配列をプロパティとして持つmongodbコレクションから文書を完全に削除しようとしています。 私は$ pullと$ unsetを使用しました。これは、文書内の値を見つけて削除することに成功しました。mongodbの文書配列から完全な文書を取り除く

例:.Originalドキュメント

{ 
    _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" 
} 

$プルと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

可能な複製(http://stackoverflow.com/questions/15121758/using-mongodb -pull-to-delete-documents-in-an-array) – Veeram

答えて

0

$pullオペレータのための公式ドキュメントの終わりに非常に便利な例があります。あなたのケースでは

、クエリは次のようになります。[アレイ内の文書を削除するには、MongoDBの$プルを使用する]の

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

しかし、item2の実際の値ではなく、item2 docの_idを持っています。 – Nikhil

+0

'$ id'演算子に' _id'を渡そうとしましたか? – Veeram

+0

ありがとう:)それは働いた! – Nikhil

関連する問題