Ich habe diese mongodb Abfrage
db.getCollection('myCollection').aggregate(
[{
$project: {
length: {
$strLenCP: "$prefix"
}
}
}, {
$sort: {
length: -1
}
}]
)
, die ich in eine Quelle Java-Projekt verwenden möchten, aber ich kann nicht die richtige Java-Code zu schreiben, verwalten (die Art ist nicht die Problem).
ich versucht, dieses
Aggregation agg = newAggregation(project().andExpression("strLenCP(prefix)").as("prefixLength"));
AggregationResults <RequestSettingsWithPrefixLength> results = mongoTemplate.aggregate(agg, RequestSettings.class, RequestSettingsWithPrefixLength.class);
List <RequestSettingsWithPrefixLength> requestSettingsList = results.getMappedResults();
aber ich bin eine Null-Schlüssel in agg JSON (Debug-Modus) erhalten:
{
"aggregate": "__collection__",
"pipeline": [{
{
"$project": {
"prefixLength": {
"null": ["$prefix"]
}
}
}]
}
}
Ich kann mein agg Objekt hat diese Projektionsoperation sehen, dass:
expression -> strLenCP(prefix)
field -> AggregationField: AggregationField - name: prefixLength, target: prefixLength, synthetic: true
params -> []
Ich bin mir nicht sicher, dass das korrekt ist, aber ich kann keine Dokumentation finden, die StrLenCP verwendet. Ich fand nur diesen Test, der die strLenCP Projektion verwendet: 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
Könnte jemand bitte helfen?
Prost
danke @Sagar Reddy für die Formatierung – marcesso
Np. In welcher Version von spring-mongo-db bist du? – Veeram
mongo-java-driver version ist 3.4.0 und org.springframework.data ist 1.9.5.RELEASE – marcesso