복붙노트

[MONGODB] MongoDB의에서 업데이트 문서의 수를 제한하는 방법

MONGODB

MongoDB의에서 업데이트 문서의 수를 제한하는 방법

문서를 업데이트하는 동안 어떻게 (). 제한 (10) db.collection.find 유사 일도 만 구현하려면?

지금은 (). 제한을 db.collection.find 문서를 받고 같은 정말 진절머리 나는 뭔가를 사용하고 있습니다 () 한 다음를 업데이트.

일반적으로 I 싶어에서 그들 각각의 레코드 및 변경 한 필드의 지정된 수를 반환합니다.

감사.

해결법

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

    1.불행하게도 당신이 가지고있는 해결 방법은 AFAIK 그것을 할 수있는 유일한 방법입니다. 중 모든 경기를 업데이트 (시 true) 또는 1 일치 (false)를 업데이트하는 부울 플래그 멀티가있다.

    불행하게도 당신이 가지고있는 해결 방법은 AFAIK 그것을 할 수있는 유일한 방법입니다. 중 모든 경기를 업데이트 (시 true) 또는 1 일치 (false)를 업데이트하는 부울 플래그 멀티가있다.

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

    2.당신이 사용할 수있는:

    당신이 사용할 수있는:

    db.collection.find().limit(NUMBER_OF_ITEMS_YOU_WANT_TO_UPDATE).forEach(
        function (e) {
            e.fieldToChange = "blah";
            ....
            db.collection.save(e);
        }
    );
    

    (foreach는 코드 크레딧 : MongoDB가 : 동일한 문서 데이터를 이용하여 업데이트 문서)

    이것이 할 것입니다 것은 사용자가 지정한 항목의 수를 변경할 수 있습니다. 당신은 절반 만 "수집"내부 사용자의 항목에 값 1 "newField"라는 필드를 추가 할 경우에 따라서, 예를 들어, 당신은에 넣을 수 있습니다

    db.collection.find().limit(db.collection.count() / 2).forEach(
        function (e) {
            e.newField = 1;
            db.collection.save(e);
        }
    );
    

    당신은 그 나머지 절반은 또한 "newField"가 있지만, 값 2, 당신이 newField가 존재하지 않는 것을 조건으로 업데이 트를 할 수 있도록하려는 경우 :

    db.collection.update( { newField : { $exists : false } }, { $set : { newField : 2 } }, {multi : true} );
    
  3. ==============================

    3.개별적으로 각 문서를 업데이트 대해 forEach를 사용하면 속도가 느립니다. 다음을 사용하여 대량의 문서를 업데이트 할 수 있습니다

    개별적으로 각 문서를 업데이트 대해 forEach를 사용하면 속도가 느립니다. 다음을 사용하여 대량의 문서를 업데이트 할 수 있습니다

    ids = db.collection.find(<condition>).limit(<limit>).map(
        function(doc) {
            return doc._id;
        }
    );
    db.collection.updateMany({_id: {$in: ids}}, <update>})
    
  4. ==============================

    4.모든 객체를 통해 다음을 업데이트 반복 처리하는 솔루션은 개별적으로 매우 느리다.

    모든 객체를 통해 다음을 업데이트 반복 처리하는 솔루션은 개별적으로 매우 느리다.

    모든 다음을 가져 오는 더 효율적으로 $를 사용하여 동시에 업데이트.

    ids = People.where(firstname: 'Pablo').limit(10000).only(:_id).to_a.map(&:id)
    People.in(_id: ids).update_all(lastname: 'Cantero')
    

    쿼리는 Mongoid를 사용하여 작성하지만, 쉽게뿐만 아니라 몽고 셸에서 다시 작성할 수 있습니다.

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

    5.대답 업데이트 된 문서의 수를 제한 (또는 삭제) 값으로 할 수있는 방법은 아직 없다 상태로> 1. A는 같은 것을 사용하는 것이 해결 방법 :

    대답 업데이트 된 문서의 수를 제한 (또는 삭제) 값으로 할 수있는 방법은 아직 없다 상태로> 1. A는 같은 것을 사용하는 것이 해결 방법 :

    db.collection.find(<condition>).limit(<limit>).forEach(function(doc){db.collection.update({_id:doc._id},{<your update>})})
    
  6. ==============================

    6.확실하지 목적이 업데이트에 대한 제한 (심지어 가능한 SQL에서)를 적용하는 무엇. 랍스터 worte으로 : 업데이트는 하나 개의 문서 또는 갱신 기준과 일치하는 모든 문서에서 작동합니다. 그래서 당신은 이전 쿼리를 기반으로 하나의 요구 또는 업데이트 하나에 기준을 조정해야합니다.

    확실하지 목적이 업데이트에 대한 제한 (심지어 가능한 SQL에서)를 적용하는 무엇. 랍스터 worte으로 : 업데이트는 하나 개의 문서 또는 갱신 기준과 일치하는 모든 문서에서 작동합니다. 그래서 당신은 이전 쿼리를 기반으로 하나의 요구 또는 업데이트 하나에 기준을 조정해야합니다.

  7. from https://stackoverflow.com/questions/6590890/how-to-limit-number-of-updating-documents-in-mongodb by cc-by-sa and MIT license