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 または栄養 ID で参照することだと思います。

マルチレベルの位置演算子がすぐに追加されることを願っています。それは素晴らしいことだ。

于 2013-10-06T15:24:26.697 に答える