2013-01-20 51 views
0

如何刪除嵌套的集合,例如下面,我想從Pic中刪除ID 50d3dbce1292dd2e98af1dd2?如何從嵌套集合中刪除數據?

數據:

{ 
    "_id": "50d3dbce1292dd2e98af1dd1", 
    "Name": "Bubba", 
    "Address": "1111", 
    "Pic" : [{"_id": "50d3dbce1292dd2e98af1dd2", "Name": "test1.jpg", "Size":"1000"}, {"_id": "50d3dbce1292dd2e98af1dd3",. "Name": "test2.jpg", "Size":"2000"}], 
    "LastModified": { 
     "$date": "2012-12-21T03:47:26.535Z" 
    } 
} 

解決了$拉:

db.coll.update({},{$拉:{ '東西':{ '設爲myVal':1} }});

+1

你試試這個? http://stackoverflow.com/questions/9048424/removing-specific-items-from-array-with-mongodb – WiredPrairie

+0

剛剛嘗試過,它現在有效。 TQ。 – Alvin

+1

爲了完整起見,您應該添加這個答案並接受它。 – mjhm

回答

1

db.collection.update(標準,objNew,UPSERT,多)

db.collection.update({ "_id": "50d3dbce1292dd2e98af1dd1" }, { $unset : { "Pic._id" : 1 } }, false, true); 

請記住,如果要更新多條記錄使用多選項爲真。

UPDATE

要使其工作,我們應該改變標準,以這樣的方式

{ "Pic._id": "50d3dbce1292dd2e98af1dd2" } 

或者用$pull爲千電子伏說:

db.coll.update({}, {$pull: {'things': {'myval': 1}}}); 
+0

如果'pic'是一個嵌入式文檔,這將工作。在這個問題中,它是一個數組,這個操作沒有效果。 –

+0

我認爲必須使用$ pull而不是$ unset。讓我試試看。 – Alvin