我有一个数据库,其中包含游戏中发生的事件。我正在尝试检索有多少独特玩家已经开始关卡的信息。我使用这段代码:
heh = list(db.events.aggregate(
[
{ "$match": {"status": 'start'}},
{"$group": {"_id": "$eventName", "players": {"$sum": 1}}},
]))
print(heh)
但我收到有关该级别启动次数的信息。如何更改代码以获取正确的信息?独特的用户拥有独特的“uid”。
答案 0 :(得分:0)
试试这个.. $ addToSet添加唯一记录,然后计算数组中的记录
db.events.aggregate(
[
{ "$match": {"status": 'start'}},
{"$group": {"_id": "$eventName", "players": {"$addToSet": "$uid"}}},
{"$project": {"_id": 1, "Count": {"$size": "$players"}}}
])
db.test1.aggregate(
[
{ "$match": {"status": 'start'}},
{"$group": {"_id": "$eventName", "players": {"$addToSet": "$uid"}}},
{$unwind:"$players"},
{$group:{_id:"$_id",count:{$sum:1}}}
]
)