Учитывая этот образец данные:MongoDB совокупности и преобразование подмножества данных на основе массива значений
[
{
"_id": "5798ae78670bc85f3e3fe0df",
"defines": [
{
"domain": "ism:SecurityLabel",
"name": "access",
"@id": "ntk:access"
},
{
"domain": "ntk:AccessProfileType",
"name": "profileDes",
"@id": "ntk:profileDes"
},
{
"domain": "ntk:AccessType",
"name": "requiresAllOf",
"@id": "ntk:requiresAllOf"
},
{
"domain": "ism:SecurityLabel",
"name": "bannerMark",
"@id": "ism:bannerMark"
},
{
"label": "Need-to-Know Access Profile Type",
"name": "AccessProfileType",
"@id": "ntk:AccessProfileType"
},
{
"label": "Need-to-Know Access Type"
"name": "AccessType",
"@id": "ntk:AccessType"
}
]
},
{
"_id": "5798ae78670bc85f3e3fe0e1",
"defines": [
{
"domain": "ntk:AccessProfileType",
"name": "accessPolicy",
"@id": "ntk:accessPolicy"
},
{
"domain": "ism:SecurityLabel",
"name": "atomicEnergyMarking",
"@id": "ism:atomicEnergyMarking"
},
{
"domain": "ism:SecurityLabel",
"name": "classification",
"@id": "ism:classification"
}
]
}
]
мне нужно запросить коллекцию, где defines.domain $in ["ism:SecurityLabel", "ntk:AccessProfileType"]
и возвращает объект с каждым доменом, имеющим множество своего соответствующим определяет, как это:
{
"ism:SecurityLabel": [
{
"domain": "ism:SecurityLabel",
"name": "access"
"@id": "ntk:access"
},
{
"domain": "ism:SecurityLabel",
"name": "bannerMark"
"@id": "ism:bannerMark"
},
{
"domain": "ism:SecurityLabel",
"name": "atomicEnergyMarking",
"@id": "ism:atomicEnergyMarking"
},
{
"domain": "ism:SecurityLabel",
"name": "classification",
"@id": "ism:classification"
}
],
"ntk:AccessProfileType": [
{
"domain": "ntk:AccessProfileType",
"name": "profileDes"
"@id": "ntk:profileDes"
},
{
"domain": "ntk:AccessProfileType",
"name": "accessPolicy"
"@id": "ntk:accessPolicy"
}
]
}
Я пытался соответствовать, а затем проецировать свои результаты, но я действительно понятия не имею, как я бы преобразовывать данные из формата в котором он находится в формате мне нужно.
{
$match: {
'defines.domain': { $in: types }
}
},
{
$project: {
defines: {
$filter: {
// ??? not sure what to do ???
}
}
}
}
Спасибо, я исправил данные образца. – bflemi3