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

Здесь я пытаюсь найти все документы, которые соответствуют заполненному полю из ссылки _file. Кажется, не работает. Что-то вроде этого возможно вообще?Mongoose запрос населенного поля

Я мог бы дублировать поле проекта этому объекту, как обходное решение для запросов, но я бы предпочел, конечно.

ответ

9

No, a find параметр условий запроса может ссылаться только на запрашиваемую коллекцию.

populate не является объединением, это просто удобная функция для отслеживания основного запроса с дополнительными запросами для привлечения связанных данных из других коллекций.

+0

Спасибо. Поэтому, чтобы быть уверенным, что для запроса коллекции History на основе проекта мне нужно будет добавить поле проекта, дублируя его из модели File? Извлечение всех документов, а затем фильтрация впоследствии не является вариантом, так как коллекция History, возможно, очень велика. –

+1

@ 0x80 Правильно, или получите все документы «Файл» с соответствующим «проектом», а затем используйте запрос '$ in' в' History', используя значения '_id' из первого запроса. – JohnnyHK

+0

Я понял. Приятно знать, что есть два варианта. Благодаря! –

Смежные вопросы