此代碼旨在批量更改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();
實地看不更新可言,所做的更改,並詢問諸如db.people.find({ "_id" : ObjectId("5379e6e21fe1e8e2fc364d17")});
,引用特定的ID驗證我的Javascript代碼確實連接到正確的數據庫,並使用正確的集合(該ID來自以前的腳本,使用相同的連接詳細信息來打印文檔ID)。
另外,我正在使用貓鼬。在創建原始文檔之後,Mongoose Schema被更新爲包含諸如birthdateYear之類的額外字段,但是從我已經完成的Google搜索和Mongo Docs閱讀中,似乎Schema更改應該不需要任何特殊工作 - 您可以設置屬性立即對更新模式的文檔(反正應該可以)。
這並沒有解決問題。 save()的回調也是可選的。 – Trindaz