MongoDB:使用过滤值按数组大小查询

时间:2013-04-22 16:56:28

标签: mongodb

在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查询中实现这种“过滤计数”?

非常感谢。

1 个答案:

答案 0 :(得分:0)

db.users.aggregate([
 {$unwind:'$emails_sent'},
 {$match: {'$emails_sent.type':'invite'}},
 {$group : {_id : '$name', sumOfEmailsSent:{$sum:1} }}
]);

顺便说一句,你错过了一个关闭$ emails_sent数组的方括号。