2015-02-13 5 views
2

Может кто-нибудь сказать мне, какКак мангуст заселить работу под капотом

У меня есть коллекция

a { 
b: String 
c: Date 
d: ObjectId --> j 
} 

j { 
k: String 
l: String 
m: String 
} 

когда я выполнять:

a.find({ b: 'thing' }).populate('d').exec(etc..) 

в фоновом режиме это на самом деле выполнив два запроса против MongoDB, чтобы вернуть все элементы 'j'?

У меня нет проблем с заполнением работы, что касается меня, это последствия задачи.

Thanks

ответ

7

Mongoose использует два запроса для выполнения запроса.

a коллекция опрашивается, чтобы получить документы, которые соответствуют основному запросу, а затем j коллекции запрошенные для заполнения поля d в документации.

Вы можете увидеть запросы Mongoose Пользуется позволяя отладочный вывод:

mongoose.set('debug', true); 
+0

Brilliant, спасибо за ваш быстрый ответ. – David

+0

@JohnnyHK - это оба запроса, обрабатываемые кодом мангуста ** на сервере ** или это настроено на то, чтобы заставить население работать над БД и возвращать полные данные? Я беспокоюсь, что это ** приведет к (по крайней мере) двум обратным переходам ** к БД ... Я знаю, что это вспомогательная функция для «чистого» кода, и это очень полезно, но в некоторых случаях, m, учитывая оптимизацию способа выполнения запросов, чтобы избежать множественных линейных (синхронизирующих) запросов и сделать два (или более) параллельных запроса :-) – Fdo

+1

@Fdo Mongoose использует два запроса, в результате чего два раунда. Вы можете видеть запросы, которые он использует, разрешая вывод отладки: 'mongoose.set ('debug', true);' – JohnnyHK

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

  • Нет связанных вопросов^_^