2011-08-29 9 views
18

예를 들어, 나는 문서mongodb에서 배열의 n 번째 원소를 지우는 법

db.test.save({_id: 1, list:[ 
    {key: "a"}, 
    {key: "b"}, 
    {key: "c"}, 
    {key: "d"}, 
    {key: "e"} 
]}) 

과 나는 목록에서 두 번째 요소를 제거해야합니다. 지금은 두 단계로 그렇게하고 있습니다. 먼저 두 번째 목록 요소를 설정하지 않았지만 unset 연산자를 사용하여 요소를 제거하지 마십시오. null이 될 것입니다. 목록 필드에서 nullable 값을 가져옵니다.

db.test.update({_id: 1}, {$unset: {"list.2": 1}}) 
db.test.update({_id: 1}, {$pull: {list: null}}) 

솔루션이 있는지 묻고 싶습니다. 한 번의 조작으로?

답변

0

에서

db.test.update({{_id: 1},{"$pull" : {"list" : { "key" : "c"}}},false,false) 

더 많은 정보를 제거 할 값을 알고있는 경우. 그것이 대답 된대로 There is no straight way of pulling/removing by array index.

원자적인 해결책이 아니어도이 해결 방법이 정상이지만이 작업을 요청하는 미해결 문제가 있습니다.