2013-01-20 4 views
0

중첩 된 컬렉션을 삭제하려면 어떻게해야합니까? 예 : 아래 그림에서 ID 50d3dbce1292dd2e98af1dd2를 Pic에서 삭제하고 싶습니다.중첩 컬렉션에서 데이터를 삭제하려면 어떻게해야합니까?

데이터 :

db.coll.update ({}, {$ 풀 :

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

$ 풀과 해결 { '일'{ '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); 

여러 레코드를 업데이트하려면 true로 다중 옵션을 사용해야합니다.

가 작동하게하려면 UPDATE, 우리는 같은 방법

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

또는 케빈으로 $pull를 사용하여 기준을 변경해야했다 :

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

'pic '이 임베디드 문서 인 경우이 작업이 가능합니다. 질문에, 그것은 배열이며이 연산은 아무런 효과가 없습니다. –

+0

$ unset 대신 $ pull을 사용해야한다고 생각합니다. 내가 그것을 시도하자. – Alvin

관련 문제