【发布时间】:2021-01-08 10:00:09
【问题描述】:
我正在尝试通过 pymongo 过滤 MongoDB 上的日期。专门寻找“匹配”大于给定日期的所有日期。我的查询绝对正确,因为它在 MongoDB 指南针 - 聚合中完美查询。但是,一旦我将它添加到我的 pymongo 代码中,它就会返回零结果。所以如上所述它不起作用,所以我已经通过指南针应用程序确认我的查询字符串实际上是正确的,请协助,我下面的代码是我用来在指南针中查询的有效的,下面是我的完整聚合管道在 pymongo - 这不起作用。 (顺便说一句:我的日期格式正确存储在 mongo - 作为“日期”)
{
// MongoDB compass code - works fine.
"date": {"$gt": new Date("2020-12-06T00:00:00.000+00:00")}
}
//Pymongo code
betdate = weekcol.aggregate([
## stage 1
{"$match":{
"date": {"$gt": new Date("2020-12-06T00:00:00.000+00:00")}
} }
])
for bdate in betdate:
print(bdate)
上面的 pymongo 代码,给我抛出了错误:
文件“”,第 9 行 “日期”:{“$gt”:新日期(“2020-12-06T00:00:00.000+00:00”)} SyntaxError: 无效语法
我感觉是新的 date() 有问题,但我将它更改为 ISODate(),它仍然不起作用。
【问题讨论】:
-
试试
ISODate("2020-12-06T00:00:00Z") -
@Yahya ,我试过了.....我接受了你的建议,并添加了带有“z”和结尾的日期,但它仍然不起作用
-
new Date()是 Javascript 代码,但您使用的是 python。我认为你必须使用 pythondatetime对象。ISODate只是 mongo shell 中new Date()的别名,您也不使用它。
标签: python mongodb pymongo etl data-analysis