Skip to content

Aggregate syntax desperately needs improvement #110

Description

@dragon-fish

analytics/api/query.ts

Lines 334 to 392 in a14ef61

const aggregate: Document[] = [
// Group by siteUrl
{
$group: {
_id: {
siteUrl: '$siteUrl',
userName: '$userName',
featureID: '$featureID',
},
_total: { $sum: 1 },
siteUrl: { $first: '$siteUrl' },
siteName: { $first: '$siteName' },
},
},
// Group users
{
$group: {
_id: {
siteUrl: '$_id.siteUrl',
featureID: '$_id.featureID',
},
_total: { $sum: '$_total' },
siteUrl: { $first: '$_id.siteUrl' },
siteName: { $first: '$siteName' },
users: {
$push: {
userName: '$_id.userName',
count: '$_total',
},
},
},
},
// Group features
{
$group: {
_id: {
siteUrl: '$_id.siteUrl',
},
_total: { $sum: '$_total' },
siteUrl: { $first: '$_id.siteUrl' },
siteName: { $first: '$siteName' },
features: {
$addToSet: {
featureID: '$_id.featureID',
count: '$_total',
},
},
users: { $first: '$users' },
},
},
{
$project: {
_id: false,
},
},
{ $sort: ctx.sort },
{ $limit: ctx.limit + 1 },
{ $skip: ctx.offset },
]

Met OOM problem

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions