Mon go количество элементов массива во всех документах коллекции - PullRequest
0 голосов
/ 28 января 2020

У меня есть коллекция mon go, где у каждого документа есть массив с несколькими хэштегами (простая строка). Я хотел бы посчитать, сколько раз появлялся каждый хэштег, и возвращать что-то вроде этого:

{hashtag: "hashtag1",
 count: numOcurrences
}
{hashtag: "hashtag2",
 count: numOcurrences
}
...

Это похоже на эту проблему , но так как я не хочу фильтровать по любой параметр, просто посчитайте общее количество вхождений. Я думаю, что это должен быть более чистый способ решить эту проблему, к сожалению, мои знания go очень ограничены ...

Коллекция, в которой находятся хэштеги, выглядит примерно так к этому, будучи полем "hastag" массив хэштегов:

{"_id": ...,
 "hashtag" : [
   "hashtag1",
    "hashtag2"
  ],
 "likes" : ...
},
{"_id": ...,
 ...
}

1 Ответ

1 голос
/ 28 января 2020

Ваш случай немного проще, чем другая проблема, которую вы упомянули, и вы можете решить ее, используя агрегацию ниже:

db.hashtags.aggregate([
  {
    "$unwind": "$hashtag"
  },
  {
    "$group": {
      "_id": "$hashtag",
      "count": {
        "$sum": 1
      }
    }
  },
  // you can skip this projection if it's okay for you to have the result like [{ _id: "hashtag1", count: 2 }]
  {
    "$project": {
      "_id": 0,
      "hashtag": "$_id",
      "count": 1
    }
  }
])

Рабочий пример можно посмотреть в mongoplayground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...