7
mongodb에서 중첩 된 그룹 쿼리를 구현하려고하는데 외부 그룹을 추가하려고 시도하고 있습니다. 다음과 같은 (단순화 된) 데이터 문서를 제공합니다 :MongoDB 중첩 그룹?
{
"timestamp" : ISODate(),
"category" : "movies",
"term" : "my movie"
}
나는 모든 카테고리의 목록을 얻으려고 노력하고 있으며, 카테고리 내에서 가장 많은 수의 용어가 있어야합니다. 이 같은 내 출력 뭔가를 싶습니다
아래 그림과 모든 카테고리의 상위 5 개를 얻을 것이다으로[
{ category: "movies",
terms: [ { term: "movie 1", total: 5000 }, { term: "movie 2", total: 200 } ... ]
},
{ category: "sports",
terms: [ { term: "football 1", total: 4000 }, { term: "tennis 2", total: 250 } ... ]
},
]
내 '내부 그룹'입니다 : 내가 가겠어요 어떻게
db.collection.aggregate([
{ $match : { "timestamp": { $gt: ISODate("2014-08-27") } } },
{ $group : { _id : "$term", total : { $sum : 1 } } },
{ $sort : { total : -1 } },
{ $limit: 5 }
]);
// Outputs:
{ "_id" : "movie 1", "total" : 943 }
{ "_id" : "movie 2", "total" : 752 }
을 '외부 집단'을 구현하는 것인가?
때때로 위의 집계] 이온은 null 값을 반환합니다 (모든 문서에 용어 값이있는 것은 아님). null 값을 무시하려면 어떻게해야합니까?
미리 감사드립니다.
감사합니다! 이것은 내 문제를 해결했으며 두 그룹 사이에'{$ sort : {total : -1}} '을 추가하여 가장 그룹화 된 용어 전체를 맨 위에 표시했지만 용어를 제한하는 방법을 알 수는 없습니다 to say 카테고리 당 5. 그룹 사이에'{$ limit : 6} '을 (를) 추가해도 작동하지 않습니다. (나는 카테고리 별 쿼리에서 상위 5 개의 용어를 사용하려고 노력하고있다). 감사! – clangers