我是mongodb的新手。 我有一个简单的电子邮件架构,实现如下:
const emailSchema = new Schema({
from:{
type: String
},
to: {
type: String
},
subject: {
type: String
},
content: {
type: String
},
provider:{
type: String
},
success:{
type: Boolean
}
现在我想查询所有电子邮件记录并将它们分成两个数组。一个用于provider=x
和provider = y
。然后计算每个success
字段。
我怎么写这样的查询?
答案 0 :(得分:2)
如果您只想计算成功率:对于任何提供商都是如此
emailSchema.aggregate([{
$match: {
{ 'success': true }
},
$group: {
_id: {
provider: '$provider'
}, //group by provider
count: {
$sum: 1
}
} //sum of success fields
]);
如果您只想计算成功字段是否存在,则任何提供者
都可能是真或假emailSchema.aggregate([{
$match: {
{'success': { $exists: true }}
},
$group: {
_id: {
provider: '$provider'
}, //group by provider
count: {
$sum: 1
}
} //sum of success fields
]);
答案 1 :(得分:1)
对组和计数使用聚合查询
emailSchema.aggregate([{
$group: {
_id: {
provider: '$provider'
}, //group by provider
count: {
$sum: '$success'
}
} //sum of success fields
])