Я знаю, что есть много тем, говорящих об этом, но я не могу понять, что пошло не так в моей реализации.Как подсчитать элементы массива в монго
У меня есть следующие документы:
{
"_id" : ObjectId("510a353929e16756d5000009"),
"skills" : [
[
"UserEmbed::Author::Skills::Copywriting",
"UserEmbed::Author::Skills::Proofreading",
"UserEmbed::Author::Skills::Proofreading",
"UserEmbed::Author::Skills::Translation",
"UserEmbed::Author::Skills::Translation",
"UserEmbed::Author::Skills::Translation"
]
]
}
Я хотел бы что-то вроде этого:
{
"UserEmbed::Author::Skills::Copywriting": 1,
"UserEmbed::Author::Skills::Proofreading": 2,
"UserEmbed::Author::Skills::Translation": 3
}
Вот что у меня есть (первый $group
, чтобы получить документ выше от моей первоначальной структуры документа):
aggregate([ { $group: { _id: "$_id", skills: { $addToSet : "$author_profile.skills._type" } } }, { $unwind : "$skills" }, { $group : { _id : "$skills", count: { $sum : 1 } } }])
Что возвращает что-то подобное (с ot ее документы):
{
"_id" : [
"UserEmbed::Author::Skills::Copywriting",
"UserEmbed::Author::Skills::Copywriting",
"UserEmbed::Author::Skills::Copywriting",
"UserEmbed::Author::Skills::Translation",
"UserEmbed::Author::Skills::Translation",
"UserEmbed::Author::Skills::Translation"
],
"count" : 1
}
Кажется, что $group
не работает должным образом. Я что-то неправильно понял?
Thx! не уделял достаточного внимания тому, что у меня были вложенные массивы ... –
Знаете ли вы, как я мог бы группировать результаты по первому '_id'? –
Я не понимаю, что вы имеете в виду ... группу, с помощью которой '_id'? – WiredPrairie