У меня есть коллекция, которая выглядит следующим образомПолучения коллекции соответствия мангуст с группой агрегатом
var StoreSchema = new Schema({
name: String,
category: [String],
subCategory: [String],
});
Образец данные выглядят следующим образом:
[
{
'name':'Store1',
'category':['Cat1','Cat2','Cat3'],
'subCategory':['SubCat1','SubCat2']
},
{
'name':'Store2',
'category':['Cat2','Cat3','Cat4'],
'subCategory':['SubCat1','SubCat2']
},
{
'name':'Store3',
'category':['Cat4','Cat3','Cat1'],
'subCategory':['SubCat1','SubCat2']
}
]
Я хочу, чтобы магазины, сгруппированных по их категориям, я хотите получить имена магазинов и идентификаторы.
Я попытался с помощью этого кода:
Store.aggregate([
{$unwind: '$category'},
{$group: { _id: '$category', count: {$sum: 1}}},
{$project: {'_id':1, category: '$_id',count: '$count'}}
]);
выход я получаю, как это:
[
{
"count": 2,
"Category": "cat1"
},
{
"count": 2,
"category": "cat2"
}
]
Можно ли получить все поля коллекции магазинов, а также. Что-то вроде этого:
[
{
"stores": [{'name':'store1','id':'1'},{'name':'store3','id':'3'}],
"count": 2,
"Category": "cat1"
},
{
"stores": [{'name':'store1','id':'1'},{'name':'store2','id':'2'}],
"count": 2,
"category": "cat2"
}
]
Благодарим за код. Оно работает. Есть ли способ установить предел для массива магазинов. Пример: если у меня есть 20 магазинов в cat1, могу ли я установить его для загрузки только 5. Могу ли я установить лимит на все извлеченные документы? –
Добро пожаловать. Посмотрите здесь http://stackoverflow.com/q/42258325/2683814 для массива магазинов нарезки. Вы можете использовать $ limit stage для ограничения полученных документов. – Veeram