Подсчитать и перечислить 20 самых повторяющихся значений определенного поля в MongoDB - PullRequest
0 голосов
/ 04 мая 2020

Не могли бы вы подтвердить правильный запрос, чтобы перечислить 20 наиболее часто используемых хэштегов и количество чисел, которые они использовали в коллекции твитов MongoDB под названием "твиты"?

Каждый документ в коллекции представляет твит.

Пожалуйста, найдите один из документов (твитов) в формате JSON здесь

Я попробовал следующий запрос:

db.tweets.aggregate([
  {
    $unwind: "$entities.hashtags"},
    {"$group" : {_id:"$entities.hashtags", count:{$sum:1}}},
    { $sort   : { count : -1 } },
    { $limit  : 20 }
])

Размотка используется для разделения документов, имеющих несколько хэштегов.

Вывод кажется близким:

/* 1 */
{
    "_id" : {
        "text" : "PrevenciónEsSalud",
        "indices" : [ 
            0, 
            18
        ]
    },
    "count" : 118.0
}

/* 2 */
{
    "_id" : {
        "text" : "DYK",
        "indices" : [ 
            0, 
            4
        ]
    },
    "count" : 112.0
}

/* 3 */
{
    "_id" : {
        "text" : "ActivadosPorLaSalud",
        "indices" : [ 
            0, 
            20
        ]
    },
    "count" : 45.0
}

/* 4 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            15, 
            23
        ]
    },
    "count" : 43.0
}

/* 5 */
{
    "_id" : {
        "text" : "HelloMyNameIs",
        "indices" : [ 
            9, 
            23
        ]
    },
    "count" : 41.0
}

/* 6 */
{
    "_id" : {
        "text" : "Quito",
        "indices" : [ 
            15, 
            21
        ]
    },
    "count" : 40.0
}

/* 7 */
{
    "_id" : {
        "text" : "LoMásLeído",
        "indices" : [ 
            20, 
            31
        ]
    },
    "count" : 40.0
}

/* 8 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            18, 
            26
        ]
    },
    "count" : 39.0
}

/* 9 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            0, 
            8
        ]
    },
    "count" : 38.0
}

/* 10 */
{
    "_id" : {
        "text" : "PrevenciónGripe",
        "indices" : [ 
            0, 
            16
        ]
    },
    "count" : 37.0
}

/* 11 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            21, 
            29
        ]
    },
    "count" : 36.0
}

/* 12 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            128, 
            136
        ]
    },
    "count" : 36.0
}

/* 13 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            40, 
            48
        ]
    },
    "count" : 35.0
}

/* 14 */
{
    "_id" : {
        "text" : "QuédateEnCasa",
        "indices" : [ 
            0, 
            14
        ]
    },
    "count" : 35.0
}

/* 15 */
{
    "_id" : {
        "text" : "ICYMI",
        "indices" : [ 
            0, 
            6
        ]
    },
    "count" : 35.0
}

/* 16 */
{
    "_id" : {
        "text" : "NosCuidamosTodos",
        "indices" : [ 
            0, 
            17
        ]
    },
    "count" : 34.0
}

/* 17 */
{
    "_id" : {
        "text" : "JuntosEcuador",
        "indices" : [ 
            0, 
            14
        ]
    },
    "count" : 34.0
}

/* 18 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            24, 
            32
        ]
    },
    "count" : 31.0
}

/* 19 */
{
    "_id" : {
        "text" : "EsteVirusLoParamosUnidos",
        "indices" : [ 
            0, 
            25
        ]
    },
    "count" : 28.0
}

/* 20 */
{
    "_id" : {
        "text" : "COVID19",
        "indices" : [ 
            23, 
            31
        ]
    },
    "count" : 28.0
}

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

Буду признателен за помощь в получении 20 самых популярных хэштегов из этой коллекции.

Спасибо.

1 Ответ

0 голосов
/ 04 мая 2020

Вы должны сгруппировать это как:

$group: {
      _id: "$entities.hashtags.text",
      count: {
        $sum: 1
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...