0
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']
}
]
내가 그들의 범주별로 그룹화 상점을 얻고 싶은 I 상점 이름과 ID도 검색하려고합니다.
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"
}
]
고맙습니다. 그것은 작동합니다. 상점 배열에 대한 제한을 설정할 수있는 방법이 있습니까? 예 : cat1에 20 개의 매장이있는 경우 5 개만 검색하도록 설정할 수 있습니까? 검색 한 모든 문서에 한도를 설정할 수 있습니까? –
당신은 오신 것을 환영합니다. 여기 스토리지 배열을 조각에 대한 http://stackoverflow.com/q/42258325/2683814보세요. 검색된 문서를 제한하기 위해 $ limit stage를 사용할 수 있습니다. – Veeram