我需要找到已完成2个事件的所有用户(唯一ID)" 1级"和"购买硬"
port
这个代码作为结果提供了大约1600个文档,因此我应该得到这么多的文档。所以我用这段代码拿出文件:
x = list(db.events.distinct("uid", {"eventName": "Level 1"}) and db.events.distinct("uid", {"eventName": "Purchase Hard"}))
然后我尝试只获得我需要的文件:
lel = list(db.events.aggregate(
[
{"$match": {"eventName" : "Level 1"}},
{"$group": {"_id": "$uid", "dateofstart": {"$addToSet": "$updated_at"}}}
]))
但结果我只得到850份文件。你能帮忙找出问题所在吗?
答案 0 :(得分:0)
您获得的文档较少,因为 $match
过滤器排除了其他事件“购买难”。您需要使用 $in
运算符将其包含在其他事件中,如下所示:
db.events.aggregate([
{ "$match": { "eventName": { "$in": ["Level 1", "Purchase Hard"] } } },
{ "$group": { "_id": "$uid", "dateofstart": { "$addToSet": "$updated_at" } } }
])
您还可以查询不同的uid
db.events.distinct("uid", { "eventName": { "$in": ["Level 1", "Purchase Hard"] } })