У меня есть содержание MongoDB, как показано ниже:Group вложен внутренний массив в мангусте
[{
"_id": {
"$oid": "57c6699711bd6a0976cabe8a"
},
"ID": "1111",
"FullName": "AAA",
"Category": [
{
"CategoryId": {
"$oid": "57c66ebedcba0f63c1ceea51"
},
"_id": {
"$oid": "57e38a8ad190ea1100649798"
},
"Value": [
{
"Name": ""
}
]
},
{
"CategoryId": {
"$oid": "57c3df061eb1e59d3959cc40"
},
"_id": {
"$oid": "57e38a8ad190ea1100649797"
},
"Value": [
[
"111",
"XXXX",
"2005"
],
[
"1212",
"YYYY",
"2000"
],
[
"232323",
"ZZZZZ",
"1999"
]
]
}
]
},{
"_id": {
"$oid": "57c6699711bd6a0976cabe8a"
},
"ID": "1111",
"FullName": "BBB",
"Category": [
{
"CategoryId": {
"$oid": "57c66ebedcba0f63c1ceea51"
},
"_id": {
"$oid": "57e38a8ad190ea1100649798"
},
"Value": [
{
"Name": ""
}
]
},
{
"CategoryId": {
"$oid": "57c3df061eb1e59d3959cc40"
},
"_id": {
"$oid": "57e38a8ad190ea1100649797"
},
"Value": [
[
"4444",
"XXXX",
"2005"
],
[
"7777",
"GGGG",
"2000"
],
[
"8888",
"ZZZZZ",
"1999"
]
]
}
]
}]
Здесь у меня есть массив с именем «ResumeCategory», где она содержит объекты с различной категорией ид.
мне нужно 1. Выберите категорию, идентификатор «57c3df061eb1e59d3959cc40» 2. выше выбранной категории содержит значение как массив 3. Из массива значений, у меня есть к группе элементов на основе второго значения и должны получить имя пользователя список
Например Выход:
[{
'CategoryName': 'XXXX',
'Users': ['AAA', 'BBB']
},
{
'CategoryName': 'YYYY',
'Users': ['AAA']
},
{
'CategoryName': 'ZZZZZ',
'Users': ['AAA', 'BBB']
},
{
'CategoryName': 'GGGG',
'Users': ['BBB']
}]
Я попытался сгруппировать с помощью агрегатной функции, как показано ниже:
resume.aggregate([
{$match: {'Category.CategoryId': new ObjectId('57c3df191eb1e59d3959cc43')}},
{$unwind: '$Category'},
{$unwind: '$Category.Value'},
{$match: {'Category.CategoryId': new ObjectId('57c3df191eb1e59d3959cc43')}},
{$group: { _id: '$Category.Value', count: {$sum: 1}}},
{$project: {'_id':0, TagValue: '$_id',count: '$count'}}
],function(err, resData){
res.send(resData);
});
Из вышеприведенного запроса он сгруппирован на основе массива Value. Он принимает массив с тремя элементами для группировки. Может ли кто-нибудь помочь группировать значение, основанное на внутреннем значении массива (один элемент, т.е. значение [1]), и получить желаемый результат.
Заранее спасибо.
Привет .. Я получаю ошибки как «недопустимые оператор $ arrayElemAt '. Моя версия MongoDb - 3.0.12 ... Это проблема с версией. Если да, то какой эквивалент '$ arrayElemAt' в версии 3.0.12 – user3211705
Оператор $ arrayElemAt 'был представлен с версией 3.2. Таким образом, он не будет работать с версией 3.0. – 4J41
Есть ли эквивалент для '$ arrayElemAt' в версии 3.0.12 mongodb ??? – user3211705