0

在 MongoDB 中,我有一个具有以下基本模式的集合(“用户”):

{
    "_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")
        }
    ]
}

我想仅根据特定“类型”的emails_sent的 $size 来查询用户,例如只计算“邀请”电子邮件。有没有办法在标准的 mongo 查询中实现这种“过滤计数”?

非常感谢。

4

1 回答 1

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

顺便说一句,您缺少一个关闭 $emails_sent 数组的方括号。

于 2013-04-22T17:05:10.190 回答