복붙노트

[MONGODB] 어떻게하여 MongoDB에서 배열의 n 번째 요소를 삭제합니다

MONGODB

어떻게하여 MongoDB에서 배열의 n 번째 요소를 삭제합니다

예를 들어 내가 문서를

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

난 목록에서 두 번째 요소를 제거하면된다. 지금 나는이 단계에서 그렇게. 우선 나는 내가 목록 필드에서 모든 널 (NULL) 값을 끌어 그 후, null이 될 것입니다, 요소를 제거하지 마십시오 두 번째 목록 요소 만 해제 연산자를 설정 해제

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

나는 한 번의 작업으로 그렇게 솔루션이 있는지 물어보고 싶은?

해결법

  1. ==============================

    1.아니, 불행하게도 당신이하고있는 것은 현재 최선의 방법입니다. 에서 MongoDB를, 당신이 바로이 문제에 대한 락스로 연결 인덱스에 의해 배열 요소를 제거 할 방법 :이 질문에서보세요.

    아니, 불행하게도 당신이하고있는 것은 현재 최선의 방법입니다. 에서 MongoDB를, 당신이 바로이 문제에 대한 락스로 연결 인덱스에 의해 배열 요소를 제거 할 방법 :이 질문에서보세요.

  2. ==============================

    2.당신은 당신이 제거 할 값을 알고있는 경우

    당신은 당신이 제거 할 값을 알고있는 경우

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

    에 대한 추가 정보

    http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ValueinanArray

  3. ==============================

    3.아니 현재 시간. / 당기 배열 인덱스에 의해 제거에는 직선 방법은 없습니다에서이 대답했다한다.

    아니 현재 시간. / 당기 배열 인덱스에 의해 제거에는 직선 방법은 없습니다에서이 대답했다한다.

    해당 작업을 요청 개방 문제는 원자 해결책이 아니다에도 불구하고이 해결 방법, 확인에도 불구하고있다.

  4. from https://stackoverflow.com/questions/7227890/how-to-delete-n-th-element-of-array-in-mongodb by cc-by-sa and MIT license