Reputation: 2189
I'm trying to convert following sql query into mongodb but I couldn't finish it
select campaign_id,campaign_name,count(subscriber_id)
group by campaign_id,campaign_name from campaigns;
Here is my partial mongodb query
db.campaigns.aggregate([
{$group: {
_id: {campaign_id: "$campaign_id",campaign_name: "$campaign_name"},
count: {$sum: "$subscriber_id"}
}}
])
Upvotes: 0
Views: 1737
Reputation: 312115
To emulate SQL count(subscriber_id)
you can prepend a $match
stage to your pipeline to filter out docs where subscriber_id
is either missing or set to null
and then you can just use a simple {$sum: 1}
for your count:
db.campaigns.aggregate([
{$match: {subscriber_id: {$ne: null}}},
{$group: {
_id: {campaign_id: "$campaign_id",campaign_name: "$campaign_name"},
count: {$sum: 1}
}}
])
Upvotes: 2