为什么我的文件数量错误?

时间:2016-08-16 09:04:43

标签: python mongodb

我需要找到已完成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份文件。你能帮忙找出问题所在吗?

1 个答案:

答案 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"] } })