Как получить результаты подсчета Aggregate - $ group на $ addFields? - PullRequest
0 голосов
/ 19 октября 2018

У меня следующий запрос.

   db.Collection.aggregate([
  {
        "$match":{
            "index": 1
                 }
  },

  {
        "$addFields":{
            "DATE": $var1
            "array":"$array1
                     }
  }

])

Это результат запроса.

OUTPUT1

    {
        "DATE" : 181019
        "array" : 100,101,105,106,201,205,208,209
    }
...
...

и I 'Я собираюсь получить результаты группы $.Я буду использовать $ array1.

    db.Collection.aggregate([
  {

        {
         $group:{
             "_id":"$array1",
             "count":{"$sum" : 1}
                }
        },

        {
        $sort: {"count" : -1}

        }


  }
])

OUTPUT2

{
 "_id" : [
100,
101,
105,
106,
201,
205,
208,
209],

"count" : 4.0

}

"count" результаты будут скопированы на все результаты.

But $ groupсоздаст плохую структуру для чтения всех данных.

Как объединить ALL OUTPUT1 с $ group "count" из OUTPUT2 ?

     {
            "$addFields":{
                "DATE": $var1
                "array":"$array1
                "count": $count
                         }
      }

Используя $ group "count", ноЯ не хочу структуру группы $.

   {
        "DATE" : 181019
        "array" : 100,101,105,106,201,205,208,209
        "count" : 4.0
    },
    {
        "DATE" : 181019
        "array" : 103,104,105,106,201,205,208,210
        "count" : 12.0
     }
...
...

1 Ответ

0 голосов
/ 25 октября 2018

запрос группы монго, как сохранить поля

Я нашел то, что хочу.Ответ - групповой трюк.

во-первых, сдвигает запрос $ addfield к $ group {query}.

Во-вторых, добавляет {$ first: {}} к запросу $ addfield, что делает $ addfield'squery $ group query.

$group:{
_id: $group_var,
name:{$first:{$addfield's query}}
"count": $count
}

Это результат его ввода.

 db.Collection.aggregate([
  {

        {
         $group:{
             "_id":"$array1",
             "array":{"$first":"$array1}
             "count":{"$sum" : 1}
                }
        },

        {
        $sort: {"count" : -1}

        }


  }
])
...