2011-08-03 11 views
15

からサブドキュメントを削除します。MongoDBのは、私は次のようなデータのコレクションを持っている文書

{ 

    "_id" : ObjectId("4e3951905e746b3805000000"), 
    "m" : "hello", 
    "r" : [{ 
     "_id" : ObjectId("4e3951965e746b8007000000"), 
     "u" : 3, 
     "m" : "response1" 
    }, { 
     "_id" : ObjectId("4e39519d5e746bc00f000000"), 
     "u" : 3, 
     "m" : "response2" 
    }, { 
     "_id" : ObjectId("4e3953dc5e746b5c07000000"), 
     "u" : 3, 
     "m" : "response3" 
    }, { 
     "_id" : ObjectId("4e3953ea5e746bd40f000001"), 
     "u" : 3, 
     "m" : "response" 
    }], 
    "u" : 3, 
    "w" : 3 
} 
{ 
    "_id" : ObjectId("4e3952c75e746bd807000001"), 
    "m" : "asdfa", 
    "r" : [{ 
     "_id" : ObjectId("4e39544e5e746bc00f000001"), 
     "u" : 3, 
     "m" : "response5" 
    }], 
    "u" : 3, 
    "w" : 3 
} 

、誰もが「R」キー サブ文書のIDのみを持っていることからサブドキュメントを削除する方法を提案することができ、私はデルに行きます?例えば

私はデルにidを持つサブドキュメントをしたい4e39519d5e746bc00f000000

{ 
    "_id" : ObjectId("4e39519d5e746bc00f000000"), 
    "u" : 3, 
    "m" : "response2" 
}, 

答えて

22

それは簡単ですが、あなただけ$pull演算子を使用する必要があるので、このサブドキュメントを削除する必要があります。

db.items.update({}, 
{ $pull : { r : {"_id": ObjectId("4e39519d5e746bc00f000000")} } }, false, false) 
関連する問題