我在使用MongoDB和Mongoose查询时遇到了麻烦。问题是,我有这个Menu
架构:
var menuSchema = new Schema({
userID: String,
name: String,
meals: [{
day: Number,
hour: Number,
minute: Number,
aliments: [{
name: String,
amount: Number,
}],
}],
});
所以我想知道如何获取特定的膳食或食物,以及如何通过我添加它们时自动生成的_id
值来更新它们。
非常感谢你。
大卫。
答案 0 :(得分:2)
我终于可以让它在用餐时工作,但不能用于食物。我这样做是为了吃饭:
Menu.update({_id: request.params.menu_id, 'meals._id': request.params.meal_id}, {'meals.$.hour': request.body.hour)}, function(error, affected, raw) {
response.send(error);
});
这是为了食物:
Menu.update({_id: request.params.menu_id, 'meals.aliments._id': request.params.aliment_id}, {'meals.aliments.$': {name: request.body.name, amount: request.body.amount}}, function(error, affected, raw) {
response.send(error);
});
编辑:好,所以我在其他帖子上寻找答案,我找到了解决方案。
看起来$ position运算符不适用于多级数组。实际上,它仅适用于1级阵列(这就是为什么它适用于膳食,但它不适用于食物)。
所以我猜解决方案是在文件中分割膳食或食物,并用膳食ID或食物ID引用它们。
我希望他们尽快添加多级位置操作员。这会很棒。