이 코드는 MongoDB 컬렉션의 모든 문서를 대량으로 변경하기위한 것입니다. 그러나이 코드를 실행 한 후에는 콜렉션의 문서에 전혀 변경이 없습니다. 그게 뭐가 잘못 되었 니?MongoDB 문서 변경 사항이 저장되지 않는 이유는 무엇입니까?
var mongoose = require('mongoose'),
async = require('async'),
Person = require('../../model/Person');
mongoose.connect('mongodb://localhost/people-questions');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
Person.find(function (err, people) {
if (err) return console.error(err);
//download bio info
async.each(people, function(person, callback) {
person.birthdateYear = '01';
person.save();
callback();
});
mongoose.connection.close();
});
이 터미널에서 열린 몽고 CLI 인스턴스를 떠나 필드가 전혀 업데이트되지 볼 db.people.find();
를 실행하여 만든 변경은 없습니다 또한 확인하기 위해 특정 ID를 참조, db.people.find({ "_id" : ObjectId("5379e6e21fe1e8e2fc364d17")});
같은 쿼리하는 내가 확인한 내 자바 스크립트 코드가 실제로 올바른 데이터베이스에 연결되어 있고 올바른 컬렉션 (해당 ID가 동일한 연결 세부 정보를 사용하여 이전 문서 ID에서 문서 ID를 인쇄 한 것)를 사용하고 있습니다.
또한 몽구스를 사용하고 있습니다. Mongoose 스키마는 원래 문서가 작성된 후 birthdateYear와 같은 추가 필드를 포함하도록 업데이트되었지만 이미 수행 한 검색 및 Mongo Docs 읽기에서 스키마 변경은 특별한 작업이 필요하지 않아야합니다. 속성을 설정할 수 있습니다 바로 업데이트 된 스키마가있는 문서에 대해 (어쨌든 가능할 수 있어야합니다).
이렇게해도 문제가 해결되지 않았습니다. 또한 save()에 대한 콜백은 선택 사항입니다. – Trindaz