복붙노트

[MONGODB] MongoDB를이 : 하나 개의 필드에있는 모든 문서를 업데이트

MONGODB

MongoDB를이 : 하나 개의 필드에있는 모든 문서를 업데이트

나는 가설 수집 된 foo라는있다.

foo는의 각 인스턴스는 시대부터 UNIX 타임 스탬프입니다 lastLookedAt라는 필드가 있습니다. 나는 현재의 타임 스탬프 (그 중 약 20,000) 기존의 모든 문서에 대해 MongoDB의 클라이언트를 통해 이동하고 타임 스탬프를 설정할 수 있도록하고 싶습니다.

이 문제를 처리하는 가장 좋은 방법은 무엇입니까?

해결법

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

    1.몽고 쉘에서, 또는 MongoDB를 클라이언트로 :

    몽고 쉘에서, 또는 MongoDB를 클라이언트로 :

    > = 3.2의 경우 • MongoDB를 :

    db.foo.updateMany ({}, {$ 세트 : {lastLookedAt : Date.now () / 1000}})

    http://docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents 참조

    > = 2.2의 경우 • MongoDB를 :

    db.foo.update ({}, {$ 세트 : {lastLookedAt : Date.now () / 1000}}, {멀티 : TRUE})

    http://docs.mongodb.org/manual/tutorial/modify-documents/#update-multiple-documents 참조

    • 들어 MongoDB를 <2.2 :

    db.foo.update ({}, {$ 세트 : {lastLookedAt : Date.now () / 1000}}, 거짓, 참)

    https://web.archive.org/web/20120613233453/http://www.mongodb.org/display/DOCS/Updating 참조

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

    2.이 코드는 당신을 위해 도움이 될 것입니다

    이 코드는 당신을 위해 도움이 될 것입니다

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

    3.지금은 한 달 조금 넘는를 위해 MongoDB를 .NET 드라이버를 사용하고있다. 내가 .NET 드라이버를 사용하여 작업을 수행하는 경우에, 나는 컬렉션 개체의 업데이트 방법을 사용합니다. 첫째, 나는 변화 할 필드에 업데이트를 내게에 관심이있는 모든 문서를 얻을 할 것 쿼리를 만들 것입니다. 몽고의 업데이트는 첫 번째 문서에 영향을 미치는 '멀티'업데이트 플래그를 사용하는 쿼리에서 하나의 요구를 결과 모든 문서를 업데이트 할 수 있습니다. 샘플 코드는 다음 ...

    지금은 한 달 조금 넘는를 위해 MongoDB를 .NET 드라이버를 사용하고있다. 내가 .NET 드라이버를 사용하여 작업을 수행하는 경우에, 나는 컬렉션 개체의 업데이트 방법을 사용합니다. 첫째, 나는 변화 할 필드에 업데이트를 내게에 관심이있는 모든 문서를 얻을 할 것 쿼리를 만들 것입니다. 몽고의 업데이트는 첫 번째 문서에 영향을 미치는 '멀티'업데이트 플래그를 사용하는 쿼리에서 하나의 요구를 결과 모든 문서를 업데이트 할 수 있습니다. 샘플 코드는 다음 ...

    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);
    
  4. from https://stackoverflow.com/questions/9038547/mongodb-update-every-document-on-one-field by cc-by-sa and MIT license