我使用pymongo查询mongodb并检查特定集合中的重复项。我已经确定了重复项,但我想在脚本中再添加一个过滤器。请在下面找到我的剧本

from pymongo import MongoClient


client = MongoClient ('localhost')
db = client.test

data = db.devices.aggregate([
    {'$group': {'_id':{'UserId':"$userId",'DeviceType':"$deviceType"},
                'count':{"$sum":1}}},
    {'$match': {'count' : {"$gt" : 1}}}
])

for _id in data:
    print _id

在上面的脚本中,我只想检查设备type=“email”所在数据的重复项。我试过在赛后加上“和”的条件,但没用。
你能告诉我怎么做到吗?
谢谢

最佳答案

您可以通过在管道前添加一个$match阶段来有效地进行此操作,以过滤文档,从而只对devicetype=“email”所在的文档进行分组:

data = db.devices.aggregate([
    {'$match': {'deviceType': 'email'}},
    {'$group': {'_id': {'UserId': "$userId", 'DeviceType': "$deviceType"},
                'count': {"$sum": 1}}},
    {'$match': {'count': {"$gt": 1}}}
])

10-06 06:42