2013-07-08 154 views
10
db.History.find({'_file.project': 'someproject') 
     .populate('_file', 'name reference project') 
     .sort(sortField || '-created') 
     .limit(max || 64) 
     .exec(this); 

在這裏,我試圖找到所有匹配填充字段從_file引用的文檔。似乎沒有工作。是否有可能這樣?貓鼬查詢填充字段

我可以將項目字段複製到這個對象,作爲一個解決方法只是查詢,但我寧願不當然。

回答

9

不,一個find查詢的條件參數只能引用被查詢的集合。

populate不是一個連接,它只是一個便利功能,通過附加查詢跟蹤主要查詢以從其他集合中獲取關聯數據。

+0

謝謝。所以,可以肯定的是,爲了查詢基於項目的歷史集合,我將不得不添加項目字段,從文件模型複製它?檢索所有文檔,然後過濾不是一種選擇,因爲歷史記錄集合可能非常大。 –

+1

@ 0x80對,或者使用匹配的'project'獲取所有'File'文檔,然後使用'_in'查詢使用來自第一個查詢的_id'值的'History'。 – JohnnyHK

+0

我現在明白了。很高興知道有兩種選擇。謝謝! –