【发布时间】:2015-08-11 01:57:16
【问题描述】:
所以,我有一个集合来存储与用户相关的文档,其结构如下:
{_id: "hofjew233332j4", userId: "fhewojfw34324", achievementUnlocked: true };
我想要做的是使用聚合和下划线能够按用户 ID 对文档进行分组,然后计算他们的记录中有多少百分比已解锁设置为 true,这样生成的文档将如下所示:
{_id: "fhewojfw34324(userId)", unlockPercentage: 40 (achievementUnlocked: true / all docs) }
我可以在只检索文档一次的情况下执行此操作吗?
【问题讨论】:
-
虽然“可能”,但总的来说这是非常不明智的。但这也引出了一个问题,即“成就”似乎应该是相对较小的东西。为什么不将一个数组用于“解锁”,一个用于“锁定”并维护每个数组的计数值?这似乎是一个比使用单独的文档更实用的模型。它还可以省去汇总数据的麻烦,因为您将始终维护总数。
-
我不确定您使用单独的文档是什么意思,但我宁愿不要用一个会不断变化的值来污染用户文档。成就实际上是一个相当大的数据集,每个用户可能包含 1000 条记录。
-
那么它可能不应该包含 1000 条记录。把它分开。我已经用答案解释了我的方法。
标签: javascript mongodb meteor mongodb-query aggregation-framework