ノードとマングースのpopulateメソッドを使用して、クエリで2つのコレクションを「結合」しようとしています。以下は私のスキーマ設定です:
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var ShopSchema = new Schema({
ssss: { type: Schema.Types.ObjectId, required :true, ref: 'Stat' },
ratings: [RatingSchema]
});
var RatingSchema = new Schema({
stat: { type: Schema.Types.ObjectId, required :true, ref: 'Stat' }
}, {_id: false});
また、クエリがエラーなしで機能するように Stat mongoose モデルをセットアップしました (ただし、結果は期待したものではありません)。
次のクエリを実行しようとしました。
ShopSchema.statics.load = function(id, cb) {
this.findOne({
_id: id
}).populate('ssss', '_id stat_id').exec(cb);
};
mongoose.model('Shop', ShopSchema);
これにより正しい結果が得られ、ssss が正しく参照されます。結果はこのようなものです。
"ssss":{"_id":"5406839ad5c5d9c5d47091f0","stat_id":1}
ただし、次のクエリでは間違った結果が得られます。
ShopSchema.statics.load = function(id, cb) {
this.findOne({
_id: id
}).populate('ratings.stat', '_id stat_id').exec(cb);
};
mongoose.model('Shop', ShopSchema);
これにより、すべての結果で rating.stat = null が得られます。誰かが私が間違ったことを教えてもらえますか? ありがとう。