#mongodb #pymongo
Вопрос:
У меня есть мои предметы, находящиеся в коллекции, как показано ниже:
{
"_id": {
"$oid": "6092037099edca65f29c09d0"
},
"items": [{"name": "item1"}, {"name": "item2"}, {"name": "item3"}]
}
Я хотел бы выполнить запрос, который возвращает отдельные элементы во всех коллекциях.
Ответ №1:
Вы можете использовать структуру агрегирования и Групповую операцию для получения отдельных элементов.
Во-первых, получите документы только с одним элементом вместо массива элементов. Затем сгруппируйте эти документы по элементам. Вы получите столько групп, сколько уникальных элементов в массивах существует. И, наконец, проецируйте _id_
поле групп на то, что вам нужно.
Вот пример запроса Mongo:
db.collection.aggregate([
{
$unwind: '$items'
},
{
$group: {
_id: "$items"
}
},
{
$project: {
"_id": 0,
"item": "$_id"
}
}
])