2013-07-08 111 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

我现在明白了。很高兴知道有两种选择。谢谢! –