2015-03-30 2 views
0

Я пытаюсь получить набор результатов, основанный на агрегированном методе монго, и на основе возврата я пытаюсь добавить свойство во всех них. Совокупный метод дает мне самое высокое значение. продаж в месяц от конкретного выхода в комплексе. Я хочу добавить свойство highSales к тем документам, которые он возвращает. Мой запрос:Каков тип возврата метода aggregate в MongoDB?

var shops = db.data.aggregate([ 
    { 
     $group: { 
      _id: "$shopName", 
      Sales: { $max: "$Sales" } 
     } 
    } 
]); 

Переменных магазины предоставляют мне 5 названий магазинов, как показано ниже:

{ "_id" : "Shop1", "Sales" : "$83,000" } 
{ "_id" : "Shop2", "Sales" : "$69,000" }.. 

Но когда я пытаюсь Переберите в магазинах она не позволяет мне добавить новое свойство. Я предполагаю, что магазины - это не массив объектов. Может ли кто-нибудь любезно сообщить, что такое тип возврата того же самого? Может ли это быть достигнуто любым другим способом?

ответ

0

Метод aggregate() возвращает курсор к документам, подготовленным на заключительном этапе операции конвейера агрегации, или если вы включаете параметр объяснения - документ, который содержит подробную информацию об обработке операции агрегирования.

Вам необходимо добавить метод toArray() к переменной магазина или результирующему курсору из метода aggregate(), например.

var shops = db.data.aggregate([ 
    { 
     $group: { 
      _id: "$shopName", 
      Sales: { $max: "$Sales" } 
     } 
    } 
]).toArray(); 

toArray() метод возвращает массив, который содержит все документы от курсора. Метод полностью выполняет курсор, загружая все документы в ОЗУ и исчерпывая курсор.

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