【发布时间】:2013-04-05 22:32:53
【问题描述】:
我正在使用 mongodb java 驱动程序通过 maven 存储库(如下 pom.xml 中)来查询日期范围与聚合框架之间的事务。 java 驱动程序生成以下 $match 我尝试在 mongo 控制台上验证并发现它不起作用:
db.transactions.aggregate(
{ "$match" :
{
"created_at" : { "$gt" : { "$date" : "2001-04-12T12:00:00.000Z"} , "$lte" : { "$date" : "2020-04-13T12:00:00.000Z"}}
}
}
)
如果我删除 $date 块并将其替换为 ISOdate 函数和日期字符串,那么它似乎正在工作。我不明白为什么它在 java 中不起作用($match JSON - 我已经从 eclipse 中获取并在 mongo 控制台中尝试,但它也不起作用。)
pom.xml
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.11.0</version>
</dependency>
有人知道为什么 $date 不能使用 MongoDB v2.4.0 处理聚合吗?
【问题讨论】:
-
试试答案,如果它不起作用,请告诉我。如果不起作用,请向我们提供有关数据库中数据存储的信息。因为我假设
date是您文档中created_at中的嵌入文件。 -
我试过了,但它不起作用。我提供的代码是由 MongoDB java 驱动程序生成的,因此我没有看到“”是一个问题。 created_at 是日期字段并保存 ISO 日期格式。请在下面找到 JSON 供您参考:{ "created_at" : ISODate("2013-04-18T10:42:22Z"), "payment_token" : "f7e595ec-1cdd-4e5d-93c5-eca8e5f9f876" }
-
我已参考您提供的 JSON 更新了我的答案。请尝试让我们知道。由于相同的代码适用于 MongoDB 2.2.3,我希望它也适用于您的版本,没有问题。
-
不,它不起作用。我正在使用 mongodb-win32-x86_64-2.4.0(即 v2.4.0)
-
对不起,根据过去的转换,我没有任何线索可以解决...但是可以肯定,下面提供的代码确实可以在我的机器上运行
标签: java mongodb mongodb-query aggregation-framework