복붙노트

[MONGODB] MongoDB의 컬렉션 모든 문서에 새 필드를 추가

MONGODB

MongoDB의 컬렉션 모든 문서에 새 필드를 추가

어떻게 기존 컬렉션의 모든 문서에 새 필드를 추가 할 수 있습니까?

나는 기존 문서의 필드를 업데이트하는 방법을하지만 컬렉션의 모든 문서에 새 필드를 추가하지 않는 방법을 알고있다. 어떻게 몽고 쉘에서이 작업을 수행 할 수 있습니다?

해결법

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

    1.지정된 필드가 존재하지 않는 경우 동일 업데이트 기존의 수집 필드로, $ 세트는 새로운 필드를 추가합니다.

    지정된 필드가 존재하지 않는 경우 동일 업데이트 기존의 수집 필드로, $ 세트는 새로운 필드를 추가합니다.

    이 예제를 체크 아웃 :

    > db.foo.find()
    > db.foo.insert({"test":"a"})
    > db.foo.find()
    { "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
    > item = db.foo.findOne()
    { "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "test" : "a" }
    > db.foo.update({"_id" :ObjectId("4e93037bbf6f1dd3a0a9541a") },{$set : {"new_field":1}})
    > db.foo.find()
    { "_id" : ObjectId("4e93037bbf6f1dd3a0a9541a"), "new_field" : 1, "test" : "a" }
    

    편집하다:

    경우 귀하의 모든 컬렉션에 new_field을 추가하려면, 당신은 모든 문서를 업데이트하려면 true (마지막 PARAM)에 빈 선택 및 설정 멀티 플래그를 사용해야합니다

    db.your_collection.update(
      {},
      { $set: {"new_field": 1} },
      false,
      true
    )
    

    편집하다:

    위의 예에서 마지막 2 개 필드 허위 사실을 지정 upsert 및 멀티 플래그합니다.

    Upsert는 : true로 설정된 경우, 문서 쿼리 기준과 일치하지 않는 새 문서를 생성합니다.

    멀티 : True로 설정이 쿼리 기준을 충족하는 여러 문서를 업데이트합니다. false로 설정하면, 하나의 문서를 업데이트합니다.

    이것은 2.2 이전 몽고 버전입니다. 최신 버전의 쿼리가 약간 변경

    db.your_collection.update({},
                              {$set : {"new_field":1}},
                              {upsert:false,
                              multi:true}) 
    
  2. from https://stackoverflow.com/questions/7714216/add-new-field-to-every-document-in-a-mongodb-collection by cc-by-sa and MIT license