【发布时间】:2021-09-03 12:14:24
【问题描述】:
我对 MongoDb 和 Spring-data-Mongo 还是很陌生。 经过大量研究后,我能够使用以下查询在 MongoDB 中获得所需的结果,但现在我发现在 Spring-data-Mongo 模板中实现相同的逻辑非常困难。
逻辑很简单:
我在文档中有 2 个日期字段和 2 个整数字段。
expireLastModifiedD(整数代表天),expireLastUsedD:(整数,代表天),lastModified:(日期类型),lastUsed:(日期类型)。
我需要找到满足以下表达式的文档。
lastModified+expireLastModifiedD < NOW && lastUsed + expireLastUsedD < NOW
我已经创建了一个 MongoDB 查询,如下所示。
[
{
$project: {
expireLastModifiedD: 1,
expireLastUsedD: 1,
lastModified: 1,
lastUsed: 1,
NowSubtractLastModified: {
$toInt: {
$divide: [
{
$subtract: [
new ISODate(),
"$lastModified"
]
},
1000 * 60 * 60 * 24
]
}
},
NowSubtractLastused: {
$toInt: {
$divide: [
{
$subtract: [
new ISODate(),
"$lastUsed"
]
},
1000 * 60 * 60 * 24
]
}
}
}
},
{
$project: {
expireLastModifiedD: 1,
expireLastUsedD: 1,
lastModified: 1,
lastUsed: 1,
NowSubtractLastModified: 1,
NowSubtractLastused: 1,
isExpireLastModifiedDLTNowSubtractLastModified: {
$lt: [
"$expireLastModifiedD",
"$NowSubtractLastModified"
]
},
isExpireLastUsedDLTNowSubtractLastused: {
$lt: [
"$expireLastUsedD",
"$NowSubtractLastused"
]
}
}
},
{
$match: {
isExpireLastModifiedDLTNowSubtractLastModified: true,
isExpireLastUsedDLTNowSubtractLastused: true
}
}
]
我需要使用聚合在 Spring-data Mongo 模板中创建上述 MongoDb 查询的帮助。
【问题讨论】:
-
看看
org.springframework.data.mongodb.core.aggregation包。它具有上述查询所需的所有运算符。另外,检查docs.spring.io/spring-data/mongodb/docs/current/reference/html/…
标签: mongodb mongodb-query aggregation-framework spring-data-mongodb