首页 > 编程语言 > 详细

mongoose修改数组中某个特定的值

时间:2017-04-22 20:22:09      阅读:822      评论:0      收藏:0      [点我收藏+]

如果一个文档中有个类型为字符串数组的字段,比如{id:1,tags:[‘aa‘,‘bb‘,‘cc‘]},现在要将tags字段的‘bb‘改为‘BB‘,之前的办法是这样写的:

articleModel.find({tags:{$all:[doc.name]}},function(err,articles){
                    articles.forEach(function(article){
                        for(var j = 0;j<article.tags.length;j++){
                            if(article.tags[j] === doc.name){
                                article.tags[j] = req.body.name;
                                article.markModified(‘tags‘);
                                article.save();
                                break;
                            }
                        }
                    })
                })

上面代码的意思,在article集合中找到所有文档的tags字段包含有doc.name的记录,然后遍历找到的结果集,循环更新每条记录。这样写代码繁琐,效率又不高,后面在这里找到灵感http://cnodejs.org/topic/541be549ad60405c1f02f660,改善后的代码如下:

articleModel.update({tags:{$all:[doc.name]},tags:doc.name,$atomic:true},{$set:{"tags.$":req.body.name}},{multi:true},function(err){
    if(err) return console.log(err);
    console.log(‘文章更新成功‘);
})

 下面这样写也可以,我猜想需要被修改的字段只要出现在第一个参数的条件表达式中就可以了

articleModel.update({tags:{$all:[doc.name]},$atomic:true},{$set:{"tags.$":req.body.name}},{multi:true},function(err){
    if(err) return console.log(err);
    console.log(‘文章更新成功‘);
})

 

mongoose修改数组中某个特定的值

原文:http://www.cnblogs.com/toward-the-sun/p/6749031.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!