【发布时间】:2016-02-06 19:11:26
【问题描述】:
我有一个表示消息线程的架构。所以 mongo 数据库中的每个文档看起来像这样:
{
id: "thread_id",
participants: ["user1", "user2"],
unReadMessageCounts: [
{
participant: "user1",
count: 5
},
{
participant: "user2",
count: 3
}
}
我想要做的是获取给定用户的所有未读消息计数的总和 - 例如,“user2”。我知道我可以通过在集合上执行find() 然后编写一个函数来总结给定用户的计数来做到这一点。但如果可能的话,我想使用 mongo 的 aggregate 功能。我知道我可以做一个match 来首先选择“user2”是参与者的所有线程,但是我如何构造group 和/或sum 表达式以从文档中提取正确的字段?
【问题讨论】:
-
公平点。在我的情况下,开始的文件数量并不是很大,所以@chridam 回答的简短程度略有增加,这对我来说更可取。但我也赞成你的回答,因为它确实是一个完美的解决方案。
标签: mongodb mongoose mongodb-query aggregation-framework