Javascript 根据MongoDB文档中的另一个字段更新一个字段(Node.js中有Mongoose)
我在MongoDB数据库中有一个名为Javascript 根据MongoDB文档中的另一个字段更新一个字段(Node.js中有Mongoose),javascript,node.js,mongodb,mongoose,updates,Javascript,Node.js,Mongodb,Mongoose,Updates,我在MongoDB数据库中有一个名为Article的集合,其模式和模型如下: var articleSchema = new Schema({ site: String, date: String, day: String, link: { type: String, unique: true, index: {unique:true} }); var Article = mongoose.model('Article', arti
Article
的集合,其模式和模型如下:
var articleSchema = new Schema({
site: String,
date: String,
day: String,
link: {
type: String,
unique: true,
index: {unique:true}
});
var Article = mongoose.model('Article', articleSchema);
文档的一个示例,它还没有day
字段:
[ { site: 'www.atlantico.fr',
date: '2014-05-27T11:10:19.000Z',
link: 'http://www.atlantico.fr/example.html',
_id: 538473817eb00f082f4803fc,
__v: 0} ]
对于此集合的所有文档,我希望根据date
字段(以我知道的给定方式)更新day
字段
我试过:
Article.find() // all documents
.exec(function (err, articles) { // articles is an array
for (var i=0; i<articles.length; i++) { // for each document
var myDate = articles[i].date; // I take its date
myDate = myDate.replace(/^(\d{4})\-(\d{2})\-(\d{2}).*$/, '$3/$2/$1'); // I create a new variable
Article.update({date: articles[i].date}, // articles with this date
{day : myDate }, // update with the new variable created using the date
function(err, numberAffected){
});
}
});
Article.find()//所有文档
.exec(函数(err,articles){//articles是一个数组
对于(var i=0;i我阅读并尝试了以下方法:
Article.find({}, function (err, articles) {
for (var i=0; i<articles.length; i++) {
Article.findOne({ link: articles[i].link }, function (err, doc){
doc.day = doc.date.replace(/^(\d{4})\-(\d{2})\-(\d{2}).*$/, '$3/$2/$1');
doc.save();
});
}
});
Article.find({},函数(err,articles){
对于(var i=0;i,更新时不能引用文档中的字段。
你发布的答案似乎是正确的。
参考这个答案