如何在mongodb中选择唯一用户

时间:2016-07-21 14:30:05

标签: python mongodb python-2.7 pymongo

我有一个数据库,其中包含游戏中发生的事件。我正在尝试检索有多少独特玩家已经开始关卡的信息。我使用这段代码:

heh = list(db.events.aggregate(
[
    { "$match": {"status": 'start'}},
    {"$group": {"_id": "$eventName", "players": {"$sum": 1}}},
]))
print(heh)

但我收到有关该级别启动次数的信息。如何更改代码以获取正确的信息?独特的用户拥有独特的“uid”。

1 个答案:

答案 0 :(得分:0)

试试这个.. $ addToSet添加唯一记录,然后计算数组中的记录

db.events.aggregate(
[
   { "$match": {"status": 'start'}},
   {"$group": {"_id": "$eventName", "players": {"$addToSet": "$uid"}}},
   {"$project": {"_id": 1, "Count": {"$size": "$players"}}}
])

Screen

db.test1.aggregate( 
[     
    { "$match": {"status": 'start'}},     
    {"$group": {"_id": "$eventName", "players": {"$addToSet": "$uid"}}},
    {$unwind:"$players"},
    {$group:{_id:"$_id",count:{$sum:1}}}
]
)