Эй им пытаются некоторые агрегацию на MongoDB используя moongose: Я получил эти данные:Aggregation с MongoDB используя мангуста
[
{
"school": "1",
"preferences": [
{
"person": "X",
"color": "A"
},
{
"person": "X",
"color": "B"
},
{
"person": "Y",
"color": "A"
}
]
},
{
"school": "2",
"preferences": [
{
"person": "Z",
"color": "A"
},
{
"person": "Y",
"color": "C"
}
]
}
]
Я думаю, что данные explaisn это сам, что я хочу, чтобы получить как результат, когда Я запрашиваю школу, которая соответствует «1». Я хотел бы получить этот результат:
[
{
"_id": "X",
"colors": [
"A",
"B"
]
},
{
"_id": "Y",
"colors": ["A"]
}
]
Я использовал агрегацию раньше, но я не могу фигурировать, чтобы получить этот результат.
Эй, человек, спасибо, я не могу поверить, что я пытался это сделать с трудом и был так прост, я использовал совпадение с идентификатором, человеком проекта: $ preferences.person, цвет: $ preferences.color, раскрутить человека , group_id: person, colors: $ addToSet: $ color и не заставил его работать, всегда получал человека, но каждый цвет повторялся в каждом человеке. –
А что, если я хотел бы получить снова школьных матчей "1" '' ' [ { "_id": "А", // Цвет появляется значок "": 2 // в 2 человек } , { "_id": "B", "появляется" : 1 } ] '' ' @yogesh –
По вашему запросу вы первый проецировать их как' { "$ проекта": { "лицо" : «$ preferences.person», «color»: «$ preferences.color»}} 'поэтому этот возвращаемый массив' person и color' как этот '' человек ': ["X", "X", "Y "]," color ": [" A "," B "," A "]' и после этого вы использовали 'unwind to person'' {"$ unwind": "$ person"} 'он только разматывает' человека' массив не является ' color' array выглядит так: «человек»: «X», «color»: [«A», «B», «A»] 'после группы« person », а затем вы использовали' addToSet как цвет', поэтому цвет содержит массив массивов вроде этого '' _id ":" Y "," color ": [[" A "," B "," A "]]'. – Yogesh