node.js 드라이버와 함께 mongoDB (3.4)를 사용하고 있으며 "items_collection"에 포함 된 모든 문서의 필드를 업데이트하려고합니다. 몇 가지 다른 접근 방식을 시도했지만 모든 문서를 올바르게 업데이트하는 솔루션을 찾을 수없는 것 같습니다. 다음은 현재 가지고있는 코드입니다.
var cursor = db.collection('items_collection').find();
cursor.on("end", function() {
console.log("Finished. Closing db...");
db.close();
});
cursor.on("err", function() {
console.dir("Error on:" + err);
throw err;
});
cursor.on("data", function(doc) {
cursor.pause();
var newTitle = getTitleFromDescription(doc.description);
db.collection('items_collection').update({_id: doc._id}, {$set:{title: newTitle}}, {multi:true});
cursor.resume();
});
이것은 나에게 합리적으로 정상인 것처럼 보이지만 제목이 "test_title"로 업데이트 된 최초의 문서 일뿐입니다. 여기서 분명한 게 빠졌 나봐요?
감사.
여러 문서 업데이트 에 저장 및 사용 대신 업데이트 를 사용하십시오 multi : true
.
db.collectionname.update( {}, { $set:{ title : "newvalue" } }, { multi : true } );
MongoDB의 모든 업데이트는 기본적으로 단일입니다. 당신은 추가해야합니다multi : true
cursor.on("data", function(doc) {
cursor.pause();
var newTitle = getTitleFromDescription(doc.description);
console.log(doc._id);
console.log(newTitle);
db.collection('items_collection').update({_id: doc._id}, {$set:{title: newTitle}}, {multi:true}).then(function(response){
console.log(response);
console.log('++++++++++++++++++');
cursor.resume();
});
});
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다