У меня есть следующий набор Чидаде на моей базе данных MongoDB:Как я могу агрегировать документы в массиве, а не в коллекции в MongoDB?
{
"_id" : 0,
"nome" : "CIDADE0",
"qtdhab" : 1231043
}
Итак, вот что я хочу сделать. Я пытаюсь сделать эквивалент этого SQL запроса в MongoDB:
SELECT MAX(QTDHAB) FROM CIDADE WHERE QTDHAB <= (SELECT AVG(QTDHAB) FROM CIDADE);
В принципе, я хочу наибольшего значения поля qtdhab из коллекции Cidade, который следует за состоянием быть ниже среднего значения того же поля qtdhab в той же коллекции cidade. Таким образом, я отобразил это в 3-х запросы, например:
var resultado = db.cidade.aggregate({"$group": {"_id": null, "avgHab": {"$avg": "$qtdhab"}}}).toArray()
var resultado2 = db.cidade.find({qtdhab: {$lte: resultado[0].avgHab}}).toArray()
resultado2.aggregate({"$group": {"_id": null, "maxHab": {"$max": "$qtdhab"}}})
Проблема заключается в том, как я узнал, трудный путь, что нет .aggregate метода для массива, таких как resultado2, поэтому последний запрос возвращает ошибку. Есть ли другой способ для меня получить наибольшее значение для поля qtdhab из этого массива документов, который был сгенерирован этими двумя запросами?
Мы не можем видеть документ, но вы хотите, чтобы в основном что-то вроде получить первые результаты от каждого массива, а затем выработать некоторые значения От этого. Но сначала вам нужно деконструировать массив. Поэтому см. ['$ Unind'] (http://docs.mongodb.org/manual/reference/operator/aggregation/unwind/) или, по крайней мере, опубликовать то, с чем здесь люди могут работать. –
Прошу прощения, я обновил сообщение с помощью структуры документа. – Don
Какова структура этого документа для массивов? Я не вижу массива. Или это элемент массива внутри документа? Я думаю, что фактический документ, содержащий массив, является неотъемлемой частью здесь. –