Я хочу запросить MongoDB, чтобы найти в документе верхнего уровня results
, сколько его вложенных документов имеет значение 0
.Быстрый запрос по значению
Например, в этой коллекции:
{name: "mary", results: {"foo" : 0, "bar" : 8}}
{name: "bob", results: {"baz" : 9, "qux" : 0}}
{name: "leia", results: {"foo" : 9, "norf" : 5}}
мой запрос должен возвращать 2
, потому что два из документов имеют 0
в качестве значения вложенного документа results
.
Вот моя попытка
db.collection.find({$where : function() {
for (var key in this.results) {
if (this.results[key] === 0) { return true;} } return false; } })
, который работает на вышеуказанном наборе данных, но слишком медленно. Мои реальные данные - это 100 тыс. Документов, каждый из которых имеет 500 вложенных документов внутри results
, и этот запрос занимает несколько минут. Можно ли быстрее спроектировать этот запрос?