2016-10-19 13 views
0

は、これは私のスキーマです:マングースは、ネストされたスキーマ内の配列を取り込む

var userSchema = { 
    folders   : [ folderSchema ], 
    ... 
} 

var folderSchema = new mongoose.Schema({ 
    itemlist  : [{ type: String, ref: 'Item', required: true }], 
    foldername : { type: String}, 
    ... 
}); 

// Item model 
var itemSchema = { 
    name: { type: String }, 
    ... 
} 

私はこれが可能で、各folderSchemaの内側ITEMLIST(配列全体)を移入したいと思いますか?

私がこれまで試したが、動作しません:

userModel.findOne({ _id: userId }, null, callback).populate({ 
    path: 'folders.$.itemlist', 
    select: 'name' 
}); 

このpostと、このpostが類似しているが、それらはフォルダのモデルを保存し、代わりに、ネストされた文書の参照を持っています。

ボーナス:itemlistを入力するためにfoldernameでいくつかのフォルダのみを選択することはできますか?

答えて

0

私は、あなたの移入するを書き換える

「複数のレベルを越え移入」 populationセクションを参照してくださいあなたは「ディープ人口」を探していると思う:

userModel.findOne({ _id: userId }, null, callback).populate({ 
    path: 'folders', 
    populate: { path : 'itemlist'} 
}); 
0

最も簡単な解決策は、実際には、ネストされたを取得することですフォルダを作成し、手動で検索を実行します。それから、単にfind({_ id:{$ in:folder}})を呼び出します。配列のすべての要素を見つける。

関連する問題