我是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"});
}
});
});
但是数据没有插入到表中并且没有显示错误,我不知道是什么问题。
我的用户表如下所示:
答案 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.