2013-11-26 18 views
0

我有以下模式是否可以壓縮貓鼬查詢中的數組?

var book_s = new Schema({ 
     //_id: automatically generated, 
     pageCount: Number, 
     titles: [{ type: Schema.Types.ObjectId, ref: 'BookTitle' }] 
    }); 

var bookTitle_s= new Schema({ 
     //_id: automatically generated, 
     language: String, 
     title: String 
}); 

如果我使用一個查詢類似如下:Book.find({}).populate('titles').exec()

我會爲每本書的所有圖書的清單。

有沒有辦法改變查詢,以便我可以傳入語言參數(比如英文),並且只將英文標題填充到Book模型中?

回答

1

您可以使用match場在populate調用只填充那些通過其條件型號:

Book.find({}).populate({path: 'titles', {match: {language: 'English'}}}).exec() 
+0

什麼,當你只想從模型內的陣列中的單個條目? (我已經更新了模式以反映這個問題) –

+0

@RavenDreamer這是一個非常不同的問題。我認爲沒有辦法做到這一點。 – JohnnyHK

+0

不幸的。那麼我認爲現在是時候重新審視我的模式了。 –