【发布时间】:2017-07-31 20:44:59
【问题描述】:
我想更新我的 mongo 文档中的份量、卡路里和营养成分。我如何才能更新详细信息?
{
"_id": ObjectId("id"),
"user_id": ObjectId("id"),
"date": 20170210,
"snacks": [
{
"nutrients": {
"protein": "0",
"carbs": "0",
"fat": "0"
},
"servings": 1,
"calories": 0.35,
"name": "Coca-Cola zero"
}
],
"dinner": [ ],
"lunch": [ ],
"breakfast": [ ]
}
我试过使用 $set 但它根本没有用。这是我一直在尝试的:
user_food.update({user_id : req.session.user_id, date: 20170210, snacks:{name:"Coca-Cola zero"}}, {'$set':{'servings': 2}}, function(err, other){
if(err){
console.log("something went wrong: " + err);
return res.status(500).send(err);
}
else{
console.log("this is other: " + other);
return res.status(200).send(other);
}
});
已解决
有效的查询:
user_food.update({user_id : req.session.user_id, date: 20170210, 'snacks.name': food},{$set: {'snacks.$.servings': serving}},function(err, other){
if(err){
console.log("something went wrong: " + err);
return res.status(500).send(err);
}
else{
console.log("this is other: " + other);
return res.status(200).send(other);
}
});
【问题讨论】:
-
我在你的例子中没有看到
$set? -
试试
user_food.update({user_id : req.session.user_id, date: 20170210, "snacks.name":"Coca-Cola zero"}, {'$set':{'snacks.$servings': 2}}, function(err, other){...})。使用positional操作员
标签: javascript arrays mongodb mongoose javascript-objects