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

GBC

我有一个Article在MongoDB数据库中命名的集合,具有以下架构和模型:

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} ]

我想针对此集合的所有文档day,根据date字段(以我已知的给定方式)更新字段

我尝试过:

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){  
        });                           
      }
});

如果我为给定的文档运行此代码(通过放置类似{link: 'http://www.atlantico.fr/example.html'}in的条件Article.find(),它将起作用。

但是,如果运行上面显示的代码,这应该可以完成所有文档的工作,那么肯定会有问题,因为这样我可以看到所有文档都没有更新。

我想念什么?谢谢您的帮助。

GBC

我阅读了http://mongoosejs.com/docs/2.7.x/docs/updating-documents.html,并尝试了以下操作:

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();
        });      
     }  
});

看来行得通。

但是我不知道这是否是最好的解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用日食警告“字段声明隐藏了另一个字段或变量”?

在golang中使用相同结构中的func引用另一个字段

如何使用并发类在Java中自动减少一个字段并自动增加另一个字段

使用另一个字段的值更新MongoDB字段

更新猫鼬模型(node.js)中的一个字段

使用联合的一个字段的地址访问另一个字段是否合法?

使用字段值更新同一文档中的另一个字段

使用外键基于另一个字段中的值来限制一个字段中允许的值

使用JavaScript中的“ id”将文本从一个字段复制到另一个字段

使用另一个表中另一个字段的值更新表中的字段

MongoDB聚合:$ Project(如何在同一投影管道的另一个字段上使用一个字段)

如何使用MongoDB和C#使用另一个字段的值更新文档?

MongoDB使用另一个字段的值添加新字段

使用聚合在每个文档mongodb中增加或减去一个字段

如何使用另一个字段的值更新MongoDB字段

如何计算具有相同值的文档数,并使用mongoDB中的另一个字段将它们分组?

mongoDB $ set问题,使用文档的键值/另一个字段值

在基于MySQL中另一个字段的子查询中使用LIMIT

使用SQL根据记录中的另一个字段检索组合记录的字段值

MongoDB-在另一个字段上使用$ nin

如何使用php在MongoDB文档中添加一个字段?

如何使用MVC5中的Enter键功能从一个字段导航到另一个字段

Linq 使用 select new 中的值来计算另一个字段

如何使用 nodejs 通过 objectId 和 mongodb 中的另一个字段查找文档?

mongoose - 查询存在于另一个字段中的字段

使用 powershell 遍历 XML 文件并将一个字段合并到另一个字段中

C# 使用另一个字段的 setter 更新字段

如何从查询中的一个字段获取信息以在另一个查询中使用?

如何使用 FilterUserMixin 过滤 Django 中的一个字段或另一个字段