迁移到MongoDB:如何查询GROUP BY + WHERE

时间:2013-07-31 10:12:10

标签: python mongodb pymongo

我有一个MYSQL表,其中包含人名的记录和到达时间作为数字。把它想象成一场马拉松比赛。我想知道有多少人到了一定的时间间隔,谁的名字相同,所以:

SELECT name, COUNT(*) FROM mydb.mytable
WHERE Time>=100 AND Time<=1000
GROUP BY name

结果我得到了:

Susan, 1
John, 4
Frederick, 1
Paul, 2

我现在正在迁移到MongoDB,并使用Python代码(所以我要求Pymongo帮助)。我试着寻找有关GROUP BY等价的信息(即使我已经读过NoSQL数据库在这种操作上比SQL更差),但是由于他们发布了新的agreggate API,我还是找不到像这样的简单示例使用group方法,Map-Reduce方法或全新的agreggate API解决。

任何帮助?

1 个答案:

答案 0 :(得分:19)

整个文档,谷歌和本网站都有这样的例子。

一些参考文献:

对于某些代码:

self.db.aggregate(
    # Lets find our records
    {"$match":{"Time":{"$gte":100,"$lte":1000}}}, 

    # Now lets group on the name counting how many grouped documents we have
    {"$group":{"_id":"$name", "sum":{"$sum":1}}} 
)