0

私はマングースに次のような自己参照を持っています:

var wordSchema = new mongoose.Schema({
        content : String,
        country: [{type: mongoose.Schema.Types.ObjectId, ref: 'Country'}],
        trad: {
            words: [{
                _id: { type: mongoose.Schema.Types.ObjectId, ref: 'Word' }

            }]
        }

    });

モデルの属性コンテンツを find で取得したい:

 Word.find({ content:regex, country:'5464dcee1874048e2c623389' }).populate('trad.words').exec(function (err, words) {
        if (!err) {
            res.json(words);
        } else {
            console.log(err);
        }
    });

ここに私が得る結果があります:

_id: "5468d91c6481cd063033a4d0"
content: "content"
country: [5464ddd226e63fad2c5aa053]
trad: {words:[{_id:5468d91c6481cd063033a4cf}]}
words: [{_id:5468d91c6481cd063033a4cf}]
0: {_id:5468d91c6481cd063033a4cf}
_id: "5468d91c6481cd063033a4cf"

subDocument ワードの other 属性が返されない理由がわかりません。何が間違っているのかを理解するのを手伝ってもらえますか?

ありがとう、

マキシム

4

1 に答える 1

0

複数のトラッドがありますか?したがって、パスpopulate('countries trad.words')を次のように設定します。

var wordSchema = new mongoose.Schema({
        content : String,
        countries: [{type: mongoose.Schema.Types.ObjectId, ref: 'Country'}],
        trad: [{
            _id: mongoose.Schema.Types.ObjectId,
            words: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Word' }]
        }]
    });

それ以外の場合は、trad フィールドは必要ありません。したがって、パスpopulate('countries trad_words')を次のように設定します。

var wordSchema = new mongoose.Schema({
        content : String,
        countries: [{type: mongoose.Schema.Types.ObjectId, ref: 'Country'}],
        trad_words: [{type: mongoose.Schema.Types.ObjectId, ref: 'Word'}]
    });
于 2014-11-16T22:31:48.130 に答える