복붙노트

[MONGODB] 내가 몽구스에서 여러 문서를 업데이트 할 수있는 방법

MONGODB

내가 몽구스에서 여러 문서를 업데이트 할 수있는 방법

나는 다음과 같은 스크립트를 발견 :

Device.find(function(err, devices) {
  devices.forEach(function(device) {
    device.cid = '';
    device.save();
  });
});

MongoDB를 여러 문서를 통해 업데이 트의 "멀티"플래그가 있지만 몽구스와 함께이 작업을 얻을 수 없습니다. 이 아직 지원되지 않습니다 아니면 내가 뭔가 잘못하고있는 중이 야?!

Device.update({}, {cid: ''}, false, true, function (err) {
  //...
});

해결법

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

    1.현재 내가 볼, 몽구스의 업데이트가 () 몇 가지 문제를 가지고 있다고 생각합니다 : https://groups.google.com/forum/#%21topic/mongoose-orm/G8i9S7E8Erg 및 https://groups.google.com/d/topic/mongoose-orm/K5pSHT4hJ_A/discussion.

    현재 내가 볼, 몽구스의 업데이트가 () 몇 가지 문제를 가지고 있다고 생각합니다 : https://groups.google.com/forum/#%21topic/mongoose-orm/G8i9S7E8Erg 및 https://groups.google.com/d/topic/mongoose-orm/K5pSHT4hJ_A/discussion.

    http://mongoosejs.com/docs/api.html (해당 모델에 따라) : 그러나, 업데이트에 대한 문서를 확인하십시오. 정의는 다음과 같습니다

    이전 솔루션 (감가 상각 몽구스 5+ 버전 이후)

    Model.update = function (query, doc, options, callback) { ... }
    

    코드가 될 것이다, 그래서 당신은 개체 내부의 옵션을 전달해야합니다 :

    Model.update = function ({}, {cid: ''}, {multi: true}, function(err) { ... });
    

    새로운 솔루션

    Model.updateMany = function (query, doc, callback) { ... }
    
    Model.updateMany = function ({}, {cid: ''}, function(err) { ... });
    

    나는 이것이 몽고 쉘에서 같은 업데이 트를 실행하는 것과 동일하지 않습니다, 그래서 몽구스는 달러 (A $) 세트에 CID를 감싸고 있다고 생각합니다. '': 당신은 쉘에서 모든 문서를 하나의 CID에 의해 대체 될 것이라는 점을 실행 한 경우.

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

    2.당신은 멀티를 사용할 필요는 true 옵션을

    당신은 멀티를 사용할 필요는 true 옵션을

    Device.update({},{cid: ''},{multi: true});
    
  3. ==============================

    3.그 답은되지 않습니다. 이것은 실제 솔루션입니다 :

    그 답은되지 않습니다. 이것은 실제 솔루션입니다 :

    Device.updateMany({}, { cid: '' });
    
  4. from https://stackoverflow.com/questions/6694507/how-can-i-update-multiple-documents-in-mongoose by cc-by-sa and MIT license