在mongo中插入阵列没有发生?

时间:2016-08-30 06:46:59

标签: node.js mongodb mongoose mongodb-query

我是MongoDb的新手,我对插入数据有疑问。我的'用户'集合的mongoose架构:

var user = new mongoose.Schema({

  username : {type: String},
  email    : {type: String,index: {unique: true}},
  password : {type: String},
  feed     : [{
                title       : {type: String},
                description : {type: String},
                latitude    : {type:Number},
                longitude   : {type:Number},
                feedImages  : [{
                                imageUrl: {type: String}
                              }]
             }]
});

我想将数据插入到feedimages,我的服务就是:

app.post('/uploadFeedImage',function(req,res) {
    var _id         = req.body._id;
    var imageUrl    = req.body.imageUrl;
    db.user.update(
        {"feed._id":_id },
        {$push : {
            feedImages:{
                imageUrl:imageUrl
            }
        }
        },function (err,result) {
            if (err) {
                res.json({"success": '0', "message": "Error adding data"});
            }
            else {
                res.json({"success": '1', "message": "Data added"});
            }
        });
});

但是数据没有插入到表中并且没有显示错误,我不知道是什么问题。

我的用户表如下所示:

TABLE

1 个答案:

答案 0 :(得分:2)

使用$推入数组的匹配元素。即feed._id匹配

试试这个:

db.user.update(
        {"feed._id":_id },
        {$push : {
            "feed.$.feedImages":{
                imageUrl:imageUrl
            }
        }
        },function (err,result) {
            if (err) {
                res.json({"success": '0', "message": "Error adding data"});
            }
            else {
                res.json({"success": '1', "message": "Data added"});
            }
        });

修改

$update positional operator,它有助于仅更新与更新条件匹配的元素。有关详细信息,请参阅MongoDB $ operator Documentation.