0

我在使用 MongoDB 和 Mongoose 查询时遇到了真正的麻烦。问题是,我有这个Menu架构:

var menuSchema = new Schema({
    userID: String,
    name: String,
    meals: [{
        day: Number,
        hour: Number,
        minute: Number,
        aliments: [{
            name: String,
            amount: Number,
        }],
    }],
});

所以我想知道如何获得特定的膳食或食物,以及如何通过_id添加它们时自动生成的值来更新它们。

非常感谢。

大卫。

4

1 回答 1

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);
});

编辑:好的,所以我在其他帖子上寻找答案,我找到了解决方案。

看起来 $ 位置运算符不适用于多级数组。实际上,它仅适用于 1 级数组(这就是为什么它适用于膳食但不适用于食物)。

所以我想解决方案是在文档中拆分餐点或食物,并使用餐点 ID 或 alimentID 引用它们。

我希望他们尽快添加多级位置运算符。那会很好。

于 2013-10-06T15:24:26.697 回答