埋め込まれたドキュメントの配列を含むモデルがあります。この埋め込まれたドキュメントは、ユーザーが特定のアクティビティで獲得したポイントを追跡します。ユーザーは複数のアクティビティの一部または1つだけになる可能性があるため、これらのアクティビティを配列に保持することは理にかなっています。ここで、特定のアクティビティの上位10人のユーザーである名声の殿堂を抽出したいと思います。現在、私はこのようにやっています:
userModel.find({ "stats.activity": "soccer" }, ["stats", "email"])
.desc("stats.points")
.limit(10)
.run (err, users) ->
(構文について疑問がある場合は、coffeescriptです)
ここで、「stats」は埋め込まれたドキュメント/アクティビティの配列です。
これは実際に機能しますが、現在、アクティビティが1つしかないアカウントでのみテストしています。ユーザーがより多くのアクティビティを実行すると、(ソートに関して)何かがうまくいかないと思います。とにかく、トップレベルのドキュメントと一緒に「activity」==「soccer」である埋め込みドキュメントのみを返すようにmongooseに指示できますか?
ところで、私はそれ自身のコレクションに統計を持ち、関連するユーザーへのdb-refを持っていることによって、これを別の方法で行うことができることを理解していますが、書き換えを検討する前に、このようにそれを行うことが可能かどうか疑問に思っています。
ありがとう!