我有一个模型,其中包含一组嵌入式文档。该嵌入式文档跟踪用户在给定活动中获得的积分。由于用户可以是多个活动的一部分,也可以只是一个活动的一部分,因此将这些活动保持在一个数组中是有意义的。现在,我想提取名人堂,即给定活动的前十名用户。目前我正在这样做:
userModel.find({ "stats.activity": "soccer" }, ["stats", "email"])
.desc("stats.points")
.limit(10)
.run (err, users) ->
(如果您想知道语法,那就是咖啡脚本)
其中“stats”是嵌入文档/活动的数组。
现在这确实有效,但目前我只测试只有一项活动的帐户。我假设一旦用户有更多活动,就会出现问题(排序方式)。无论如何我可以告诉猫鼬只返回嵌入文档,其中“活动”==“足球”以及顶级文档?
顺便说一句,我意识到我可以通过另一种方式做到这一点,通过在它自己的集合中拥有统计信息并向相关用户提供一个 db-ref,但我想知道在我考虑任何重写之前是否可以这样做。
谢谢!