我正在使用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
从上面的脚本中,我想仅检查DeviceType =“email”的数据的重复项。我在比赛后尝试添加“和”条件,但是没有用。
请您告诉我如何实现这一目标?
由于
答案 0 :(得分:2)
您可以通过在管道中添加$match
阶段来过滤文档来有效地执行此操作,这样您就可以只对文档进行分组,其中deviceType =" email":
data = db.devices.aggregate([
{'$match': {'deviceType': 'email'}},
{'$group': {'_id': {'UserId': "$userId", 'DeviceType': "$deviceType"},
'count': {"$sum": 1}}},
{'$match': {'count': {"$gt": 1}}}
])
答案 1 :(得分:0)
我认为这是using $and with $match in mongodb的近似重复。
正如在那个问题中,我相信您的查询可能只是语法错误,您需要以下内容:
$match: {
$and: [
{'count': {"$gt": 1}},
{'DeviceType': {"$eq": "email"}}
]
}
如果这没有用,那么请粘贴到目前为止所尝试的内容以及任何错误消息输出。