MongoDB:统计单条记录的数组元素

MongoDB: Count array elements of a single record

我在尝试为我的应用程序执行一项操作时卡住了。

假设有一个 "games" 集合,用户可以在其中注册玩。在嵌套的 "registered" 文档中仅推送玩家 ID。

{
    "_id" : ObjectId("55008814d6422512da0b2a3d"),
    "max" : 50,
    "opened" : "yes",
    "registered": {
        ObjectId("55008814d6422512da9u0b2a3d"),
        ObjectId("1029475634d64433456d0eudh3"),
        ObjectId("493475756fe6422512da0b2a3d"),
        ...
    }
}

网页上的输出是这样的:

Game 0000000000010 | Registered: 0/50   |   [ Register ]
Game 0000000000011 | Registered: 10/50  |   [ Register ]
...

当玩家注册时,数字递增。逻辑。

所以我的问题是:

如何计算每个游戏的 "registered" 嵌套文档中的玩家数量,以便显示 Registered: 10/50

希望已经足够清楚了,谢谢大家!

您必须使用此处的聚合框架:http://docs.mongodb.org/manual/reference/operator/aggregation/size/

db.games.aggregate([{$project: {gameId: 1, registered: {$size: 'registered'}}}])