【问题标题】:Migrating to MongoDB: how to query GROUP BY + WHERE迁移到 MongoDB:如何查询 GROUP BY + WHERE
【发布时间】:2023-04-06 17:21:02
【问题描述】:

我有一个 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 解决。

有什么帮助吗?

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    在文档、Google 和本网站中都有这样的示例。

    一些参考资料:

    对于一些代码:

    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}}} 
    )
    

    【讨论】:

    • 我认为使用 $name 让我怀疑如何去做,因为 name 是数据库中字段的名称,而不是 pymongo 标签。为什么要分组的字段名称是这样表示的?
    • @RomanRdgz 老实说我不知道​​,这是一个设计决定,你必须向 10gen 询问,但是,如果没有 $,字符串在 MongoDB 中被视为文字,它是$,它使 MongoDB 的反应好像它是一个字段值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多