I have a table in mongodb database, which I am trying to aggregate using python. Table is in the following format-
[{'date': '01-01-2022', 'orderid': 1001},
{'date': '01-01-2022', 'orderid': 1001},
{'date': '01-01-2022', 'orderid': 1002},
{'date': '02-01-2022', 'orderid': 1003},
{'date': '02-01-2022', 'orderid': 1003},
{'date': '02-01-2022', 'orderid': 1003},
{'date': '02-01-2022', 'orderid': 1004},
{'date': '02-01-2022', 'orderid': 1005},
{'date': '03-01-2022', 'orderid': 1006},
{'date': '03-01-2022', 'orderid': 1007}]
I want to group the data on the basis of date column and give count of unique orderid for each date group. Expected Output-
[{'date': '01-01-2022', 'count_orderid': 2},
{'date': '02-01-2022', 'count_orderid': 3},
{'date': '03-01-2022', 'count_orderid': 2}]
I have tried the following code, and various combinations but it gives error.
agg_result= collection.aggregate(
[{
"$group" :
{"_id" : "$date"
}}.distinct('orderid').length
])
There currently isn't a
"$group"accumulator operator that will do what you want. You could write a custom"$accumulator"in javascript, but there's an easier way by using a"$group"stage followed by a"$project"stage.Try it on mongoplayground.net.