Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据MongoDB文档中的另一个字段更新一个字段(Node.js中有Mongoose)_Javascript_Node.js_Mongodb_Mongoose_Updates - Fatal编程技术网

Javascript 根据MongoDB文档中的另一个字段更新一个字段(Node.js中有Mongoose)

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

我在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', 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,更新时不能引用文档中的字段。 你发布的答案似乎是正确的。 参考这个答案