복붙노트

[MONGODB] 어떻게 MongoDB의 문서에서 완전히 필드를 제거하려면?

MONGODB

어떻게 MongoDB의 문서에서 완전히 필드를 제거하려면?

{ 
    name: 'book',
    tags: {
        words: ['abc','123'],
        lat: 33,
        long: 22
    }
}

이 문서입니다 가정하자. 어떻게 모두에서 완전히이 컬렉션의 문서를 "단어를"제거합니까? 나는 모든 문서는 "단어"없이 할 것을 권장합니다

 { 
     name: 'book',
     tags: {
         lat: 33,
         long: 22
     }
}

해결법

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

    1.이 시도 : 컬렉션이 '예'라면

    이 시도 : 컬렉션이 '예'라면

    db.example.update({}, {$unset: {words:1}}, false, true);
    

    이 참조 :

    http://www.mongodb.org/display/DOCS/Updating#Updating-%24unset

    최신 정보:

    위의 링크를 더 이상 커버 '$ unset'ing. 당신이 컬렉션에있는 모든 문서에서이 필드를 제거하려는 경우 : {진정한 멀티}; 반드시 추가하는 그렇지 않으면, 그것은 단지 그것과 일치를 발견 한 첫 번째 문서에서 제거됩니다. 업데이트 된 문서에 대해이 작업을 참조하십시오 :

    https://docs.mongodb.com/manual/reference/operator/update/unset/

    예:

    db.example.update({}, {$unset: {words:1}} , {multi: true});
    
  2. ==============================

    2.처음에 나는 질문에 현상금을 가지고 왜 (I 질문이 좋은 답을 가지고 있으며, 추가 할 수있는 아무것도 생각)하지만, 나는 15 번을 받아 들여 upvoted 된 대답은 실제로 잘못 것으로 나타났습니다하지 않았다!

    처음에 나는 질문에 현상금을 가지고 왜 (I 질문이 좋은 답을 가지고 있으며, 추가 할 수있는 아무것도 생각)하지만, 나는 15 번을 받아 들여 upvoted 된 대답은 실제로 잘못 것으로 나타났습니다하지 않았다!

    예, 당신은 $ 해제 연산자를 사용해야하지만이 설정되지 않은 콜렉션에 대한 문서가 존재하지 않는 단어 키를 제거하는 것입니다. 그래서 기본적으로는 아무것도 할 수 없습니다.

    당신이 몽고 말할 필요 그래서 점 표기법을 사용하여 단어의 다음 문서 태그에보고합니다. 그래서 올바른 쿼리입니다.

    db.example.update(
      {},
      { $unset: {'tags.words':1}},
      false, true
    )
    

    그냥 완료를 위해, 나는 훨씬 더 나쁜 그 일을 다른 방법을 참조하지만,이 방법 당신은 (심지어이 문서에서 다른 필드를 기준으로) 모든 사용자 지정 코드로 필드를 변경할 수 있습니다.

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

    3.제거하거나하여 MongoDB에서 필드를 삭제하려면

    제거하거나하여 MongoDB에서 필드를 삭제하려면

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

    4.

    db.example.updateMany({},{"$unset":{"tags.words":1}})
    

    우리는 또한 여러 문서를 업데이트하려면이 옵션을 사용할 수 있습니다.

  5. ==============================

    5.내가 포함 된 문서에서 열이 비슷한을 대신 제거하려고했다. 그것은 해결책을 찾기 위해 나에게 렸어요이 내가 같은 일을하려고 다른 사람을 위해 여기를 게시 줄 알았는데, 그래서 내가 건너 온 첫 번째 게시물이었다.

    내가 포함 된 문서에서 열이 비슷한을 대신 제거하려고했다. 그것은 해결책을 찾기 위해 나에게 렸어요이 내가 같은 일을하려고 다른 사람을 위해 여기를 게시 줄 알았는데, 그래서 내가 건너 온 첫 번째 게시물이었다.

    따라서이 같은 대신 데이터 외모를 말할 수 :

    { 
      name: 'book',
      tags: [
        {
          words: ['abc','123'],
          lat: 33,
          long: 22
        }, {
          words: ['def','456'],
          lat: 44,
          long: 33
        }
      ]
    }
    

    포함 된 문서에서 열 단어를 제거하려면 다음을 수행하십시오

    db.example.update(
      {'tags': {'$exists': true}},
      { $unset: {'tags.$[].words': 1}},
      {multi: true}
    )
    

    또는 updateMany를 사용하여

    db.example.updateMany(
      {'tags': {'$exists': true}},
      { $unset: {'tags.$[].words': 1}}
    )
    

    $ 값이 존재하지만 그것은 안전한 항해를하지 않을 경우가 포함 된 문서에 필요한 존재하므로 해제는 편집이 (태그가 먼저 존재하는 경우는 체크 실 거예요)됩니다.

    이것은 사용하는 버전 3.6에 도입 된 모든 위치 연산자 ($ [])

  6. ==============================

    6.기본적으로 업데이트 () 메소드는 하나의 문서를 업데이트합니다. 쿼리 기준과 일치하는 모든 문서를 업데이트하기 위해 다중 매개 변수를 설정합니다.

    기본적으로 업데이트 () 메소드는 하나의 문서를 업데이트합니다. 쿼리 기준과 일치하는 모든 문서를 업데이트하기 위해 다중 매개 변수를 설정합니다.

    버전 3.6에서 변경되었습니다. 구문 :

    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>,
         collation: <document>,
         arrayFilters: [ <filterdocument1>, ... ]
       }
    )
    

    예 :

    db.getCollection('products').update({},{$unset: {translate:1, qordoba_translation_version:1}}, {multi: true})
    

    당신의 예에서 :

    db.getCollection('products').update({},{$unset: {'tags.words' :1}},  {multi: true})
    
  7. ==============================

    7.몽고 4.2 시작, 그것은 약간 다른 구문을 사용할 수도 있습니다 :

    몽고 4.2 시작, 그것은 약간 다른 구문을 사용할 수도 있습니다 :

    // { name: "book", tags: { words: ["abc", "123"], lat: 33, long: 22 } }
    db.collection.update({}, [{ $unset: ["tags.words"] }], { many: true })
    // { name: "book", tags: { lat: 33, long: 22 } }
    

    또한 통합 파이프 라인을 수용 할 수 업데이트 방법 (집계 파이프 라인의 사용을 의미 제곱 브래킷을 참고).

    $ 해제 조작이 사용되는이 방법은 그 신택스 필드의 배열을 (이하 "쿼리"하나는 대조적으로) 집약 한 것이다.

  8. ==============================

    8.그리고 mongomapper에 대한,

    그리고 mongomapper에 대한,

    Shutoff.collection.update ({}, { '$ 해제'=> { 'shutoff_type': 1}} => 진정한 멀티)

  9. ==============================

    9.{     이름 : '책'     태그 : {         즉 : 'ABC', '123',         위도 : 33,         긴 : 22     } }

    {     이름 : '책'     태그 : {         즉 : 'ABC', '123',         위도 : 33,         긴 : 22     } }

    년 :

    db.tablename.remove ({ 'tags.words': 'ABC', '123']})

  10. ==============================

    10."단어"경우 확인이 존재하고 문서에서 제거

    "단어"경우 확인이 존재하고 문서에서 제거

        db.users.update({"tags.words" :{$exists: true}},
                                               {$unset:{"tags.words":1}},false,true);
    

    사실이 일치하는 경우 여러 문서를 업데이트 나타냅니다.

  11. ==============================

    11.당신은 또한 3.4에서 프로젝트를 사용하여 집계에서이 작업을 수행 할 수 있습니다

    당신은 또한 3.4에서 프로젝트를 사용하여 집계에서이 작업을 수행 할 수 있습니다

    {$ 프로젝트 : { "tags.words": 0}}

  12. ==============================

    12.패키지를 참조하고 다양한 "키"를 제거하려면, 이 시도

    패키지를 참조하고 다양한 "키"를 제거하려면, 이 시도

    db['name1.name2.name3.Properties'].remove([
    {
         "key" : "name_key1"
    },
    {
         "key" : "name_key2"
    },
    {
         "key" : "name_key3"
    }
    )]
    
  13. from https://stackoverflow.com/questions/6851933/how-to-remove-a-field-completely-from-a-mongodb-document by cc-by-sa and MIT license