如何使用MongoDB中的子字典更新数组中的多个记录

时间:2016-04-30 11:11:28

标签: node.js mongodb

我正在尝试使用子字典更新数组中的多个记录。如果在集合中找到该记录,那么该记录必须更新。

我的猫鼬模式如下:

comments: [{
            text: {
                type: String,
            },
            author: {
                id: {
                    type: mongoose.Schema.Types.ObjectId,
                    ref: 'User'
                },
                name: {
                   type:String
                },
                photo:{
                   type:String
                }            
            }
        }]



**My data like this:**




comments : [ 
                {
                    "text" : "Good one",
                    "_id" : ObjectId("5722101611a53cca08544d25"),
                    "author" : {
                        "id" : "123",
                        "name" : null,
                        "photo" : null
                    }
                },
                 {
                    "text" : "nice one",
                    "_id" : ObjectId("5722103511a53cca08544d24"),
                    "created" : ISODate("2016-04-28T13:29:25.444Z"),
                    "author" : {
                        "id" : "123",
                        "name" :null,
                        "photo":null
                    }
                },
                 {
                "text" : "Good one",
                "_id" : ObjectId("5718768d98eb065c035b645"),
                "author" : {
                    "id" : "456"
                }
            }]

我想根据 author.id 更新comments数组中的名称和照片。在上面的数据中更新 author.id = 123

我的代码是:

Event.find({'comments.author.id':_id},(err,event)=>{
_.each(event,function(eventData){
                  _.each(eventData.comments,function(commentData){
                    if(commentData.author.id ==_id){

                      console.log("event:"+eventData._id)
                       Event.update({_id:eventData._id},{$set:{'comments':[{'author.name':username,'author.photo':photoUrl}]}},{multi:true},(err,updateComment)=>{
                        console.log("commentupdate:"+JSON.stringify(updateComment))
                    });
                    }

                  })   
              })
           })

我在最近两天被困在这里。请给我任何解决方案。不要重复,如果重复,请提供有效答案。感谢

0 个答案:

没有答案