source

MongoDB: 한 필드에 있는 모든 문서 업데이트

bestscript 2023. 2. 16. 22:01

MongoDB: 한 필드에 있는 모든 문서 업데이트

내 수집품에는foo가정해서

의 각 인스턴스foo에는 lastLookedAt라고 하는 필드가 있습니다.이 필드는 에폭 이후 UNIX 타임스탬프입니다.MongoDB 클라이언트를 통해 모든 기존 문서(약 20,000개)의 타임스탬프를 현재 타임스탬프로 설정할 수 있으면 좋겠습니다.

어떻게 대처하면 좋을까요?

예를 들어 버전에 관계없이<update>다음과 같습니다.

{  $set: { lastLookedAt: Date.now() / 1000 }  }

단, MongoDB 버전에 따라 쿼리는 다르게 표시됩니다.버전에 관계없이 빈 조건이 모든 문서와 일치해야 합니다.Mongo 쉘 또는 임의의 MongoDB 클라이언트:

$version >= 3.2:

db.foo.updateMany( {}, <update> )
  • {}조건입니다(빈 조건은 임의의 문서와 일치합니다).

3.2 > $version > = 2.2:

db.foo.update( {}, <update>, { multi: true } )
  • {}조건입니다(빈 조건은 임의의 문서와 일치합니다).
  • {multi: true}"복수 문서 업데이트" 옵션입니다.

$version < 2.2:

db.foo.update( {}, <update>, false, true )
  • {}조건입니다(빈 조건은 임의의 문서와 일치합니다).
  • false"upsert" 파라미터의 경우
  • true는 "multi" 파라미터(복수의 레코드 갱신)에 대한 것입니다.

이 코드가 도움이 됩니다.

        Model.update({
            'type': "newuser"
        }, {
            $set: {
                email: "abc@gmail.com",
                phoneNumber:"0123456789"
            }
        }, {
            multi: true
        },
        function(err, result) {
            console.log(result);
            console.log(err);
        })  

MongoDB를 사용하고 있습니다.NET 드라이버는 한 달이 조금 넘었습니다.를 사용하여 실행한다면.NET 드라이버, 컬렉션 오브젝트에 Update 메서드를 사용합니다.먼저 관심 있는 모든 문서를 얻을 수 있는 쿼리를 작성하고 변경하고자 하는 필드에 대한 업데이트를 수행합니다.Mongo의 업데이트는 첫 번째 문서에만 영향을 미치며 쿼리에서 생성된 모든 문서를 업데이트하려면 '다중' 업데이트 플래그를 사용해야 합니다.샘플 코드는 다음과 같습니다.

var collection = db.GetCollection("Foo");
var query = Query.GTE("No", 1); // need to construct in such a way that it will give all 20K //docs.
var update = Update.Set("timestamp", datetime.UtcNow);
collection.Update(query, update, UpdateFlags.Multi);

mongodb 메서드를 사용하여 여러 문서를 업데이트할 수 있습니다.

간단한 쿼리는 다음과 같습니다.

db.collection.updateMany(filter, update, options)

uppdate에 대한 자세한 내용은 여기를 참조하십시오.

요건에 따라 업데이트 코드는 다음과 같습니다.

User.updateMany({"created": false}, {"$set":{"created": true}});

여기서 $set을 사용해야 합니다.왜냐하면 작성한 내용을 true에서 false로 변경하고 싶기 때문입니다.참조용.문서 전체를 변경하려면 $set을 사용할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/9038547/mongodb-update-every-document-on-one-field