Запрос MongoDB для множества разных категорий - PullRequest
0 голосов
/ 14 января 2019

В моей базе данных Mongo есть поле, содержащее массив строк, как показано ниже:

db.band.insertMany([
   { name: "Alice", instrument: ["guitar", "voice"] },
   { name: "Bob", instrument: ["bass"] },
   { name: "Eve", instrument: ["drums", "voice"] }
]);

Я бы хотел запросить базу данных, чтобы найти набор различных инструментов, на которых могут играть участники группы (в этом примере: ["guitar", "voice", "bass", "drums"]).

Можно ли сделать это простым запросом? Я не смог найти ничего, связанного с этим.

1 Ответ

0 голосов
/ 14 января 2019

Вы можете использовать $ unwind для получения документа по инструменту, а затем $ group с помощью $ addToSet для получения уникальных значений из всех документов:

db.band.aggregate([
    {
        $unwind: "$instrument"
    },
    {
        $group: {
            _id: null,
            instruments: { $addToSet: "$instrument" }
        }
    }
])

выходы:

{
    "_id": null,
    "instruments": [
        "drums",
        "bass",
        "voice",
        "guitar"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...