2011-08-03 21 views
15

gelen alt belgeyi kaldırın:mongodb bir aşağıdaki verilerle bir koleksiyona sahip belgeye

{ 

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

kimse alt belgenin sadece kimliği olan bir 'r' tuşuna bir alt belge nasıl kaldırılacağı önerebilir, ben del gidiyorum ? Örneğin

i del için kimliğe sahip bir alt belge istemek 4e39519d5e746bc00f000000

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

cevap

22

Çok kolay, sadece $pull operatörü kullanmak gerekir Yani bu alt belge silinmesi gerektiğini:

db.items.update({}, 
{ $pull : { r : {"_id": ObjectId("4e39519d5e746bc00f000000")} } }, false, false) 
İlgili konular