在MongoDB中,我有一个包含以下基本模式的集合(“users”):
{
"_id" : ObjectId("50e5de00b623143995c5b739")
"name" : "Jon",
"emails_sent" : [
{
"type" : "invite",
"sent_time" : ISODate("2013-04-21T21:11:50.999Z")
},
{
"type" : "invite",
"sent_time" : ISODate("2013-04-15T21:10:35.999Z")
},
{
"type" : "follow",
"sent_time" : ISODate("2013-04-21T21:11:50.999Z")
}
]
}
我想根据某种“类型”的电子邮件发送的$尺寸来查询用户,例如只计算“邀请”电子邮件。有没有办法在标准的mongo查询中实现这种“过滤计数”?
非常感谢。
答案 0 :(得分:0)
db.users.aggregate([
{$unwind:'$emails_sent'},
{$match: {'$emails_sent.type':'invite'}},
{$group : {_id : '$name', sumOfEmailsSent:{$sum:1} }}
]);
顺便说一句,你错过了一个关闭$ emails_sent数组的方括号。