【问题标题】:Pymongo Query for Date is failingPymongo 查询日期失败
【发布时间】:2021-07-20 21:05:39
【问题描述】:

我有一个在 mongodb compass 中运行良好的查询,但是当我将它带入 Jupyter 时它就中断了。问题与日期过滤器有关。

我都试过了:

cursor = prod_db.my_collection.find({"date": {"$eq": "new Date('2021-04-26')"}, "type": "Regular"})

还有

cursor = prod_db.my_collection.find({"date": "new Date('2021-04-26')", "type": "Regular"})

如果我删除日期查询,我会得到我期望的返回,它验证数据库连接设置正确并且“类型”过滤器有效。我在这里错过了什么?

【问题讨论】:

标签: python-3.x mongodb mongodb-query pymongo


【解决方案1】:

在 python 和 Mongo 之间映射日期列的问题主要是因为 Mongo 将日期存储为 JavaScript 日期对象,然后将 ISODate 格式包装在它周围。但是,如果我们试图从 python 传递到 mongo 的日期值是日期时间格式(如上面提到的@hhharsha36),那么一个应该是好的

当我使用 pandas 和 python 变量中的日期并使用它在 Mongo 中查询/插入/更新时,我发现这篇文章很有帮助:(https://medium.com/nerd-for-tech/how-to-prepare-a-python-date-object-to-be-inserted-into-mongodb-and-run-queries-by-dates-and-range-bc0da03ea0b2)

【讨论】:

    【解决方案2】:

    new Date 是 MongoShell 的日期关键字。 你应该用python内置的datetime包替换它。

    from datetime import datetime
    cursor = prod_db.my_collection.find({"date": datetime(2021, 4, 26), "type": "Regular"})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-26
      • 2016-09-25
      • 1970-01-01
      • 2017-07-22
      • 2012-08-11
      • 2016-07-24
      • 2017-01-17
      • 2018-12-16
      相关资源
      最近更新 更多