Получить общее количество каждого элемента в массиве объекта MongoDB - PullRequest
1 голос
/ 02 мая 2019

У меня есть набор объектов в MongoDB.Объект включает в себя массив типов.Теперь я подключаюсь к БД с помощью Mongoose и хотел бы указать количество объектов для каждого типа.

Например, мои объекты выглядят как

{
"name": "abc",
"tags": ["a","b","c"]
}

Теперь я хотел бы получитьОбщее количество объектов, которые, например, имеют тег «a»

Я подключаюсь к MongoDB с помощью NodeJS Backend с помощью Mongoose

Спасибо за ваши идеи о том, как эффективно выполнить этот запрос.

Добавление : В случае, когда я не знаю, какие типы тегов существуют в разных объектах, и я хотел бы получить обзор всех тегов, как мне нужно сделать запрос?на этом?Для лучшего понимания приведу пример.Два объекта в базе данных:

{
"name": "abc",
"tags": ["a","b","c"]
},
{
"name": "abc",
"tags": ["a","b"]
}

функция / запрос должна дать ответ примерно так:

{
"a": 2,
"b": 2,
"c": 1
}

Ответы [ 2 ]

1 голос
/ 02 мая 2019
collection.aggregate([
    {$unwind: "$tags" },
    {$group: {
        _id: "$tags",  
        count: {$sum : 1}  
    }},

]);

это даст следующий вывод:

/* 1 */
{
    "_id" : "c",
    "count" : 2
}

/* 2 */
{
    "_id" : "b",
    "count" : 3
}

/* 3 */
{
    "_id" : "a",
    "count" : 2
}
0 голосов
/ 02 мая 2019

Используйте count, который является методом сбора. Возвращает счет только вместо всех документов. Если вам нужны документы, замените count на find

collection.count({tags:"a"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...