복붙노트

[MONGODB] 어떻게하여 MongoDB에서 배열 요소를 제거하려면?

MONGODB

어떻게하여 MongoDB에서 배열 요소를 제거하려면?

여기서 배열 구조

contact: {
    phone: [
        {
            number: "+1786543589455",
            place: "New Jersey",
            createdAt: ""
        }
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }

    ]
}

여기에 나는 단지 몽고 아이디 (_id) 및 전화 번호 (1786543589455)를 알고 난 문서에서 그 전체에 해당하는 배열 요소를 제거해야합니다. 즉 전화 배열 인덱스 요소는 전화 번호와 대응하는 배열 요소를 제거 할 필요가 일치 제로.

contact: {
    phone: [
        {
            number: "+1986543589455",
            place: "Houston",
            createdAt: ""
        }
    ]
}

나는 다음 업데이트 방법으로 시도

collection.update(
    { _id: id, 'contact.phone': '+1786543589455' },
    { $unset: { 'contact.phone.$.number': '+1786543589455'} }
);

영이 아닌 인덱스 요소 전화 어레이 내부 배열 객체로부터 1,786,543,589,455 : 그러나 수를 제거한다. 성공없이 또한 풀과 시도.

어떻게하여 MongoDB의 배열 요소를 제거하려면?

해결법

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

    1.다음 쿼리를보십시오 :

    다음 쿼리를보십시오 :

    collection.update(
      { _id: id },
      { $pull: { 'contact.phone': { number: '+1786543589455' } } }
    );
    

    그것은 주어진 _id와 문서를 발견하고 그 contact.phone 배열에서 전화 1786543589455를 제거합니다.

    당신은 (널 (null)로 설정) 배열의 값을 설정 해제하기 $ 해제를 사용할 수 있지만 완전히 제거 할 수 없습니다.

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

    2.코드 아래에이 전화 번호가 배열에서 완전한 개체 요소를 제거합니다 '1786543589455'

    코드 아래에이 전화 번호가 배열에서 완전한 개체 요소를 제거합니다 '1786543589455'

    db.collection.update(
      { _id: id },
      { $pull: { 'contact': { number: '+1786543589455' } } }
    );
    
  3. ==============================

    3.당신은 단순히 하위 문서를 제거 $ 풀을 사용할 수 있습니다. 기존의 배열에서 $ 당김 조작 제거하는 값 또는 지정된 조건에 일치하는 값의 모든 인스턴스.

    당신은 단순히 하위 문서를 제거 $ 풀을 사용할 수 있습니다. 기존의 배열에서 $ 당김 조작 제거하는 값 또는 지정된 조건에 일치하는 값의 모든 인스턴스.

    Collection.update({
        _id: parentDocumentId
      }, {
        $pull: {
          subDocument: {
            _id: SubDocumentId
          }
        }
      });
    

    이 주어진 ID에 대한 부모의 문서를 발견하고, 지정된 기준과 일치하는 하위 문서에서 요소를 제거합니다.

    여기에 풀에 대해 자세히 알아보십시오.

  4. ==============================

    4.몽구스의 경우 : 문서에서 :

    몽구스의 경우 : 문서에서 :

    contact.phone.pull({ _id: itemId }) // remove
    contact.phone.pull(itemId); // this also works
    

    정답에 대한 레오 니드 Beschastny의 답변을 참조하십시오.

  5. from https://stackoverflow.com/questions/16959099/how-to-remove-array-element-in-mongodb by cc-by-sa and MIT license