我在orders
数据库中有一个名为main
的集合。要计算所有订单,我输入
use main
db.orders.count()
所有订单文件都有customer_email_address
。每个客户都可以有很多订单。
如何计算所有唯一的电子邮件地址?
另外,我如何计算所有不在my_own_address@gmail.com
和my_coworkers_address@gmail.com
等特定电子邮件地址列表中的唯一电子邮件地址(我和我的同事已经下了一些测试订单,我们'我想忽略那些。)
答案 0 :(得分:1)
您可以使用简单的不同查询
db.orders.distinct(
'customer_email_address',
{customer_email_address:
{$nin: ["my_own_address@gmail.com", "my_coworkers_address@gmail.com"]}
}
).length
使用聚合框架:
pipeline = [
{
"$match" : {
"customer_email_address" : {
"$nin" : [
"my_own_address@gmail.com",
"my_coworkers_address@gmail.com"
]
}
}
},
{
"$group" : {
"_id" : "$customer_email_address",
"count" : {
"$sum" : 1
}
}
},
{
"$group" : {
"_id" : null,
"count" : {
"$sum" : 1
}
}
}
]
db.orders.aggregate(pipeline).result[0].count