我有一个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解决。
任何帮助?
答案 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}}}
)