gpt4 book ai didi

mongodb - 将 $strLenCP 与 Spring Data MongoDB 一起使用

转载 作者:可可西里 更新时间:2023-11-01 10:17:27 37 4
gpt4 key购买 nike

我有这个 mongodb 查询

db.getCollection('myCollection').aggregate(
[{
$project: {
length: {
$strLenCP: "$prefix"
}
}
}, {
$sort: {
length: -1
}
}]
)

我想将其用于 spring java 项目,但我无法编写正确的 java 代码(排序不是问题)。

我试过了

Aggregation agg = newAggregation(project().andExpression("strLenCP(prefix)").as("prefixLength"));
AggregationResults < RequestSettingsWithPrefixLength > results = mongoTemplate.aggregate(agg, RequestSettings.class, RequestSettingsWithPrefixLength.class);
List < RequestSettingsWithPrefixLength > requestSettingsList = results.getMappedResults();

但我在 agg JSON 中得到一个空键( Debug模式):

{
"aggregate": "__collection__",
"pipeline": [{
{
"$project": {
"prefixLength": {
"null": ["$prefix"]
}
}
}]
}
}

我可以看到我的 agg 对象有这个投影操作:

expression -> strLenCP(prefix)
field -> AggregationField: AggregationField - name: prefixLength, target: prefixLength, synthetic: true
params -> []

我不确定这是否正确,但我找不到任何使用 strLenCP 的文档。我只找到了这个使用 strLenCP 投影的测试: https://github.com/spring-projects/spring-data-mongodb/blob/dc57b66adfd60b4d69d1d349b4fcfa4ab0da95e7/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/SpelExpressionTransformerUnitTests.java#L922

有人可以帮忙吗?

干杯

最佳答案

在 1.10.0.RC1 中添加了对 Mongo3.4 聚合运算符的支持。如果您可以更新到发布候选版本,那么一切都应该可以正常工作。

或者您可以尝试以下操作,但您需要使用 1.8.5 版本。

 Aggregation aggregation = newAggregation(
project().and(new AggregationExpression() {
@Override
public DBObject toDbObject(AggregationOperationContext aggregationOperationContext) {
return new BasicDBObject("$strLenCP", "$prefix");
}
}).as("prefixLength")
);

关于mongodb - 将 $strLenCP 与 Spring Data MongoDB 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41550451/

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