gpt4 book ai didi

java - Mongodb (v2.4.0) $match 聚合不适用于日期范围

转载 作者:可可西里 更新时间:2023-11-01 09:37:07 24 4
gpt4 key购买 nike

我正在通过 maven 存储库(如下面的 pom.xml 中)使用 mongodb java 驱动程序来查询具有聚合框架的日期范围之间的事务。 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 block 并将其替换为 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 处理聚合?

最佳答案

您必须在传递到 $match 聚合之前格式化日期。

Order.aggregate([
{
$match: {
createdAt: {
$gte: new Date(req.body.startDate),
$lt: new Date(req.body.endDate)
}
}
},
{
$lookup: {
from: 'acbinstallerpayments',
localField: "_id",
foreignField: 'customerObjectID',
as: 'installerPaymentDetails'
}
}
]);

关于java - Mongodb (v2.4.0) $match 聚合不适用于日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15987601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com