1
결과 나는 다음과 같은 집합이 있습니다집계 푸시 N 번호가
db.reports.aggregate({ $group: { _id: "$user", reports: { $push: {report: {properties: "$properties"} } }}}, { $project: { _id: 0, user: "$_id", reports: "$reports"} })
어떻게 든 배열에 얻을수 보고서의 수를 제한하고자합니다. I.E보고를 사용자가 정의한 값으로 제한하려고합니다. 1,5,10 등 의미 나는 보고서 필드에 N 개의 보고서 (나는 시간 소인별로 정렬)를 포함 시키길 원한다. 지금 당장 나는 모든 보고서를 사용자 당 보고서 수를 제한하는 방법이 확실치 않다.
$ 제한을 시도했지만 보고서 배열에 푸시 된 보고서 수가 아닌 반환 된 사용자 수가 제한되어있어 작동하지 않았습니다.
기본적으로 사용자별로 보고서를 그룹화하고 특정 수의 보고서 만 포함하려고합니다. 가능한 한 조기에 보고서 수를 제한하여 파이프 라인 전체에서 전체 컬렉션을 처리하지 않아도됩니다.
mapReduce로 쉽게 할 수 있습니다. 나는 당신이 단순히 집합체로 그것을 할 수 있다고 확신하지 못한다. $ 슬라이스 연산자는 현재 아쉽게도 집계에서 지원되지 않습니다. – innoSPG
집계가있는 다른 방식으로 사용자 당 보고서가 있다면 숫자를 제한하는 방법이 있습니까? IE에 배열로 밀어 넣지 않았다면. 어쩌면 파이프 라인에서 몇 그룹을 할 수 있습니다. – lostintranslation
가능한지 모르겠습니다. 그러나 다른 사람이 아이디어를 제안 할 수 있습니다. 한편, 당신은 내 문제를 해결하기 위해 줄일 수 있습니다. – innoSPG