Образец документа:


{
    "id": "K",
    "powers": [
        {
            "label": "a",
            "Rating": 7
        },
        {
            "label": "b",
            "Rating": 3
        },
        {
            "label": "c",
            "Rating": 4
        },
        {
            "label": "d",
            "Rating": 5
        }
    ],
    "phy": {
        "height": 67,
        "weight": 150
    }
}

Для этой коллекции я хочу подсчитать, сколько различных возможностей имеет каждый идентификатор.

Мне нужен результат как - ID = K, различная метка мощности - 4

1
kbs 20 Апр 2020 в 00:51
Дублируется ли этот "id": "K" в каких-либо других документах?
 – 
whoami - fakeFaceTrueSoul
20 Апр 2020 в 01:07
Нет, это уникально
 – 
kbs
20 Апр 2020 в 01:08
Отвечает ли это на ваш вопрос? Получение различных значений записей
 – 
whoami - fakeFaceTrueSoul
20 Апр 2020 в 03:19

1 ответ

Так что самый простой способ сделать это

/** db.collection.distinct('field on which distinct is needed', condition) */

db.collection.distinct('powers.label', {"id" : "K"})

Поскольку это будет массив, вы можете использовать .length в коде, чтобы получить уникальную длину.

Ссылка: .distinct( )

0
whoami - fakeFaceTrueSoul 20 Апр 2020 в 01:17
Не могли бы вы показать длину для всех идентификаторов . Два столбца — ID, длина (количество степеней)
 – 
kbs
20 Апр 2020 в 02:09
: Что вы, мужчины, показываете с длиной всех идентификаторов?
 – 
whoami - fakeFaceTrueSoul
20 Апр 2020 в 03:20