Учитывая коллекцию MongoDB, как это:Монго дб группировки + отчетливый
c = [{
"name": "john",
"tags": ["a", "b", "c"],
"values": [1, 2, 3]
},
{
"name": "paul",
"tags": ["a", "d"],
"values": [3, 4, 5]
}
]
Я хотел бы сделать запрос, который соответствует определенным критериям, а затем возвращает отчетливую копию всех критериев, доступных из извлеченного документа, так что если я запросить:
"все документы, чьи метки включает в себя значение a
"
я получаю:
[
{
"name": "john"
},
{
"name": "paul"
},
"aggregated_tags": ["a", "b", "c", "d"],
"aggregated_values": [1, 2, 3, 4, 5]
]
Я уже пришел к решению, но я не доволен этим, поскольку он включает обработку списков в Python, чтобы я отфильтровывал все дублированные термины, которые я получил в «доступных_tags» и «доступных_значениях», m ищет команду агрегации, которая выполняет задание.
Я знаю, что я должен использовать какую-то агрегирование манго, но хотя я могу сделать запрос с правильными критериями, я все еще не могу понять, как агрегировать/отличать поля критериев, которые получаю как результаты ,
Посмотрите на оператора $ размотки. Это выравнивает массивы, как я думаю, вы хотите: http://docs.mongodb.org/manual/reference/operator/aggregation/unwind/ – Alex
Спасибо. Я думаю, что я понял, как это сделать, используя '$ unwind', но я все еще не уверен, что лучший способ. Я собираюсь обновить ответ завтра. –