我有一个表示消息线程的模式。因此,在蒙戈数据库中的每个文件看起来像:如何使用聚合来计算特定文档的总和?
{
id: "thread_id",
participants: ["user1", "user2"],
unReadMessageCounts: [
{
participant: "user1",
count: 5
},
{
participant: "user2",
count: 3
}
}
我想要做的就是给定用户的所有未读邮件数的总和 - 说,“用户2”。我知道我可以通过在集合上做一个find()
然后编写一个函数来总结给定用户的计数。但是如果可能的话,我想使用mongo的aggregate
功能。我知道我可以做一个match
来首先选择“user2”是参与者的所有主题,但是如何构建group
和/或sum
表达式来从文档中拉出正确的字段?
公平点。在我的情况下,开头的文档数量并不是很大,所以@chridam答案略有增加的简洁性使它更适合我。但我也赞成你的回答,因为它确实是一个完美的解决方案。 – rmacqueen