2016-07-14 2 views
1

Дано:агрегации MongoDB работает две групповые операции сразу

Коллекция, где у меня есть несколько столбцов, где в течение двух из них я хочу, чтобы все используемые значения

В настоящее время я делаю два скопления, как показано ниже (упрощенный)

db['myCollection'].aggregate(
    [{$group: {"_id":"$firstCol"}} ] 
); 

и

db['myCollection'].aggregate(
    [{$group: {"_id":"$secondCol"}} ] 
); 

Но он чувствует, как в ste ресурсов для запуска двух агрегатов. Есть ли способ получить обе сгруппированные результаты сразу?

Я думал о их объединении, а затем разделил его на код.

+0

Непонятно, что вы здесь задаете. Вы хотите сгруппировать «firstCol» и «secondCol»? Можете ли вы предоставить образец документа с ожидаемым результатом? – styvane

ответ

1

Вы можете сделать это, как это с помощью оператора $addToSet

db['myCollection'].aggregate([ 
    { 
     $group: { 
      _id: null, 
      col1: { 
       $addToSet: "$firstCol" 
      }, 
      col2: { 
       $addToSet: "$secondCol" 
      } 
     } 
    } 
]) 

Если у вас есть индексы целевых полей, то я выбрал бы отдельные звонки с distinct, так как это может воспользоваться этим и, возможно, приводят к меньшей рабочей нагрузке/более быстрому исполнению.

db[myCollection].distinct('firstCol') 
+0

@BoasEnkler Помог ли этот ответ или вам нужно что-то другое? – DAXaholic