16

私はmongodbに接続しているnode.jsサーバーでmongoose.jsを使用しており、次のようなmongooseモデルがあります

SubSchema = new Schema({
    _member:     {type: ObjectId, ref: 'Member'},
    members:     [{type: ObjectId, ref: 'Member'}],
    created:     { type: Date, default: Date.now }
});
mongoose.model('SubModel', SubSchema);

MainSchema = new Schema({
    _member:     {type: ObjectId, ref: 'Member'},
    subs:        [SubSchema],
    members:     [{type: ObjectId, ref: 'Member'}],
    created:     { type: Date, default: Date.now }
});
var MainModel mongoose.model('MainModel', MainSchema);

このようなコマンドでプルします

var q = MainModel.find({})
                 .sort('created', -1)
                 .limit(25)
                 .populate("_member")
                 .populate("subs._member")
                 .populate("subs.members");

q.execFind(function(err, mains){
    //mains[0].subs[0].members - will always be empty why?
});

私の問題は、subs.members配列を取得したり、ロードしたりできないことです。空の配列として表示され続けます。

subs._member が正常にロードされても、.populate("subs.members") を試してみましたが、役に立ちませんでした

4

5 に答える 5

1

Follow-up on @JohnnyHK's post, you can specify the Model to use in populate() for now:

https://github.com/LearnBoost/mongoose/issues/1377#issuecomment-15920370

于 2013-06-19T04:12:55.677 に答える
0

サブドキュメントの深いネスト層がいくつかありましたが、提供されたオプションはどれもうまくいきませんでした。深い人口をシームレスに処理するこの素晴らしい Mongoose プラグインを見つけました。populate で動作すると予想されるのと同じ構文を使用するだけですが、実際には機能します。

https://github.com/buunguyen/mongoose-deep-populate

于 2016-11-17T19:16:53.113 に答える
-1

少し違うように見えるものがありますが、ドキュメントに配列アイテムを入力します。問題を引き起こしているのはobjectidであるかどうか疑問に思っています。

var mongoose = require('mongoose');
var Schema = mongoose.Schema, ObjectID = Schema.ObjectId;

var SubSchema = new Schema({
    testsub: String,       
    created: { type: Date, default: Date.now }
});

var MainSchema = new Schema({
    test: String
    subs: [SubSchema],
    created: { type: Date, default: Date.now }
});

mongoose.model('MainSchema', MainSchema, mainschema);

var query = MainSchema.find({});
于 2012-10-08T19:50:07.353 に答える