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'}}}])
我在尝试为我的应用程序执行一项操作时卡住了。
假设有一个 "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'}}}])