Skip to content

Commit cd8402f

Browse files
committed
DATAMONGO-2077 - Polishing.
Abbreviate AggregationMethodReference factory methods. Fix deprecation tag. Update documentation. Original pull request: #639.
1 parent 3811ddf commit cd8402f

File tree

2 files changed

+112
-119
lines changed

2 files changed

+112
-119
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/spel/MethodReferenceNode.java

Lines changed: 111 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -45,157 +45,149 @@ public class MethodReferenceNode extends ExpressionNode {
4545
Map<String, AggregationMethodReference> map = new HashMap<String, AggregationMethodReference>();
4646

4747
// BOOLEAN OPERATORS
48-
map.put("and", arrayArgumentAggregationMethodReference().forOperator("$and"));
49-
map.put("or", arrayArgumentAggregationMethodReference().forOperator("$or"));
50-
map.put("not", arrayArgumentAggregationMethodReference().forOperator("$not"));
48+
map.put("and", arrayArgRef().forOperator("$and"));
49+
map.put("or", arrayArgRef().forOperator("$or"));
50+
map.put("not", arrayArgRef().forOperator("$not"));
5151

5252
// SET OPERATORS
53-
map.put("setEquals", arrayArgumentAggregationMethodReference().forOperator("$setEquals"));
54-
map.put("setIntersection", arrayArgumentAggregationMethodReference().forOperator("$setIntersection"));
55-
map.put("setUnion", arrayArgumentAggregationMethodReference().forOperator("$setUnion"));
56-
map.put("setDifference", arrayArgumentAggregationMethodReference().forOperator("$setDifference"));
53+
map.put("setEquals", arrayArgRef().forOperator("$setEquals"));
54+
map.put("setIntersection", arrayArgRef().forOperator("$setIntersection"));
55+
map.put("setUnion", arrayArgRef().forOperator("$setUnion"));
56+
map.put("setDifference", arrayArgRef().forOperator("$setDifference"));
5757
// 2nd.
58-
map.put("setIsSubset", arrayArgumentAggregationMethodReference().forOperator("$setIsSubset"));
59-
map.put("anyElementTrue", arrayArgumentAggregationMethodReference().forOperator("$anyElementTrue"));
60-
map.put("allElementsTrue", arrayArgumentAggregationMethodReference().forOperator("$allElementsTrue"));
58+
map.put("setIsSubset", arrayArgRef().forOperator("$setIsSubset"));
59+
map.put("anyElementTrue", arrayArgRef().forOperator("$anyElementTrue"));
60+
map.put("allElementsTrue", arrayArgRef().forOperator("$allElementsTrue"));
6161

6262
// COMPARISON OPERATORS
63-
map.put("cmp", arrayArgumentAggregationMethodReference().forOperator("$cmp"));
64-
map.put("eq", arrayArgumentAggregationMethodReference().forOperator("$eq"));
65-
map.put("gt", arrayArgumentAggregationMethodReference().forOperator("$gt"));
66-
map.put("gte", arrayArgumentAggregationMethodReference().forOperator("$gte"));
67-
map.put("lt", arrayArgumentAggregationMethodReference().forOperator("$lt"));
68-
map.put("lte", arrayArgumentAggregationMethodReference().forOperator("$lte"));
69-
map.put("ne", arrayArgumentAggregationMethodReference().forOperator("$ne"));
63+
map.put("cmp", arrayArgRef().forOperator("$cmp"));
64+
map.put("eq", arrayArgRef().forOperator("$eq"));
65+
map.put("gt", arrayArgRef().forOperator("$gt"));
66+
map.put("gte", arrayArgRef().forOperator("$gte"));
67+
map.put("lt", arrayArgRef().forOperator("$lt"));
68+
map.put("lte", arrayArgRef().forOperator("$lte"));
69+
map.put("ne", arrayArgRef().forOperator("$ne"));
7070

7171
// ARITHMETIC OPERATORS
72-
map.put("abs", singleArgumentAggregationMethodReference().forOperator("$abs"));
73-
map.put("add", arrayArgumentAggregationMethodReference().forOperator("$add"));
74-
map.put("ceil", singleArgumentAggregationMethodReference().forOperator("$ceil"));
75-
map.put("divide", arrayArgumentAggregationMethodReference().forOperator("$divide"));
76-
map.put("exp", singleArgumentAggregationMethodReference().forOperator("$exp"));
77-
map.put("floor", singleArgumentAggregationMethodReference().forOperator("$floor"));
78-
map.put("ln", singleArgumentAggregationMethodReference().forOperator("$ln"));
79-
map.put("log", arrayArgumentAggregationMethodReference().forOperator("$log"));
80-
map.put("log10", singleArgumentAggregationMethodReference().forOperator("$log10"));
81-
map.put("mod", arrayArgumentAggregationMethodReference().forOperator("$mod"));
82-
map.put("multiply", arrayArgumentAggregationMethodReference().forOperator("$multiply"));
83-
map.put("pow", arrayArgumentAggregationMethodReference().forOperator("$pow"));
84-
map.put("sqrt", singleArgumentAggregationMethodReference().forOperator("$sqrt"));
85-
map.put("subtract", arrayArgumentAggregationMethodReference().forOperator("$subtract"));
86-
map.put("trunc", singleArgumentAggregationMethodReference().forOperator("$trunc"));
72+
map.put("abs", singleArgRef().forOperator("$abs"));
73+
map.put("add", arrayArgRef().forOperator("$add"));
74+
map.put("ceil", singleArgRef().forOperator("$ceil"));
75+
map.put("divide", arrayArgRef().forOperator("$divide"));
76+
map.put("exp", singleArgRef().forOperator("$exp"));
77+
map.put("floor", singleArgRef().forOperator("$floor"));
78+
map.put("ln", singleArgRef().forOperator("$ln"));
79+
map.put("log", arrayArgRef().forOperator("$log"));
80+
map.put("log10", singleArgRef().forOperator("$log10"));
81+
map.put("mod", arrayArgRef().forOperator("$mod"));
82+
map.put("multiply", arrayArgRef().forOperator("$multiply"));
83+
map.put("pow", arrayArgRef().forOperator("$pow"));
84+
map.put("sqrt", singleArgRef().forOperator("$sqrt"));
85+
map.put("subtract", arrayArgRef().forOperator("$subtract"));
86+
map.put("trunc", singleArgRef().forOperator("$trunc"));
8787

8888
// STRING OPERATORS
89-
map.put("concat", arrayArgumentAggregationMethodReference().forOperator("$concat"));
90-
map.put("strcasecmp", arrayArgumentAggregationMethodReference().forOperator("$strcasecmp"));
91-
map.put("substr", arrayArgumentAggregationMethodReference().forOperator("$substr"));
92-
map.put("toLower", singleArgumentAggregationMethodReference().forOperator("$toLower"));
93-
map.put("toUpper", singleArgumentAggregationMethodReference().forOperator("$toUpper"));
94-
map.put("strcasecmp", arrayArgumentAggregationMethodReference().forOperator("$strcasecmp"));
95-
map.put("indexOfBytes", arrayArgumentAggregationMethodReference().forOperator("$indexOfBytes"));
96-
map.put("indexOfCP", arrayArgumentAggregationMethodReference().forOperator("$indexOfCP"));
97-
map.put("split", arrayArgumentAggregationMethodReference().forOperator("$split"));
98-
map.put("strLenBytes", singleArgumentAggregationMethodReference().forOperator("$strLenBytes"));
99-
map.put("strLenCP", singleArgumentAggregationMethodReference().forOperator("$strLenCP"));
100-
map.put("substrCP", arrayArgumentAggregationMethodReference().forOperator("$substrCP"));
101-
map.put("trim", mapArgumentAggregationMethodReference().forOperator("$trim").mappingParametersTo("input", "chars"));
102-
map.put("ltrim",
103-
mapArgumentAggregationMethodReference().forOperator("$ltrim").mappingParametersTo("input", "chars"));
104-
map.put("rtrim",
105-
mapArgumentAggregationMethodReference().forOperator("$rtrim").mappingParametersTo("input", "chars"));
89+
map.put("concat", arrayArgRef().forOperator("$concat"));
90+
map.put("strcasecmp", arrayArgRef().forOperator("$strcasecmp"));
91+
map.put("substr", arrayArgRef().forOperator("$substr"));
92+
map.put("toLower", singleArgRef().forOperator("$toLower"));
93+
map.put("toUpper", singleArgRef().forOperator("$toUpper"));
94+
map.put("indexOfBytes", arrayArgRef().forOperator("$indexOfBytes"));
95+
map.put("indexOfCP", arrayArgRef().forOperator("$indexOfCP"));
96+
map.put("split", arrayArgRef().forOperator("$split"));
97+
map.put("strLenBytes", singleArgRef().forOperator("$strLenBytes"));
98+
map.put("strLenCP", singleArgRef().forOperator("$strLenCP"));
99+
map.put("substrCP", arrayArgRef().forOperator("$substrCP"));
100+
map.put("trim", mapArgRef().forOperator("$trim").mappingParametersTo("input", "chars"));
101+
map.put("ltrim", mapArgRef().forOperator("$ltrim").mappingParametersTo("input", "chars"));
102+
map.put("rtrim", mapArgRef().forOperator("$rtrim").mappingParametersTo("input", "chars"));
106103

107104
// TEXT SEARCH OPERATORS
108-
map.put("meta", singleArgumentAggregationMethodReference().forOperator("$meta"));
105+
map.put("meta", singleArgRef().forOperator("$meta"));
109106

110107
// ARRAY OPERATORS
111-
map.put("arrayElemAt", arrayArgumentAggregationMethodReference().forOperator("$arrayElemAt"));
112-
map.put("concatArrays", arrayArgumentAggregationMethodReference().forOperator("$concatArrays"));
113-
map.put("filter", mapArgumentAggregationMethodReference().forOperator("$filter") //
108+
map.put("arrayElemAt", arrayArgRef().forOperator("$arrayElemAt"));
109+
map.put("concatArrays", arrayArgRef().forOperator("$concatArrays"));
110+
map.put("filter", mapArgRef().forOperator("$filter") //
114111
.mappingParametersTo("input", "as", "cond"));
115-
map.put("isArray", singleArgumentAggregationMethodReference().forOperator("$isArray"));
116-
map.put("size", singleArgumentAggregationMethodReference().forOperator("$size"));
117-
map.put("slice", arrayArgumentAggregationMethodReference().forOperator("$slice"));
118-
map.put("reverseArray", singleArgumentAggregationMethodReference().forOperator("$reverseArray"));
119-
map.put("reduce", mapArgumentAggregationMethodReference().forOperator("$reduce").mappingParametersTo("input",
120-
"initialValue", "in"));
121-
map.put("zip", mapArgumentAggregationMethodReference().forOperator("$zip").mappingParametersTo("inputs",
122-
"useLongestLength", "defaults"));
123-
map.put("in", arrayArgumentAggregationMethodReference().forOperator("$in"));
124-
map.put("arrayToObject", singleArgumentAggregationMethodReference().forOperator("$arrayToObject"));
125-
map.put("indexOfArray", arrayArgumentAggregationMethodReference().forOperator("$indexOfArray"));
126-
map.put("range", arrayArgumentAggregationMethodReference().forOperator("$range"));
112+
map.put("isArray", singleArgRef().forOperator("$isArray"));
113+
map.put("size", singleArgRef().forOperator("$size"));
114+
map.put("slice", arrayArgRef().forOperator("$slice"));
115+
map.put("reverseArray", singleArgRef().forOperator("$reverseArray"));
116+
map.put("reduce", mapArgRef().forOperator("$reduce").mappingParametersTo("input", "initialValue", "in"));
117+
map.put("zip", mapArgRef().forOperator("$zip").mappingParametersTo("inputs", "useLongestLength", "defaults"));
118+
map.put("in", arrayArgRef().forOperator("$in"));
119+
map.put("arrayToObject", singleArgRef().forOperator("$arrayToObject"));
120+
map.put("indexOfArray", arrayArgRef().forOperator("$indexOfArray"));
121+
map.put("range", arrayArgRef().forOperator("$range"));
127122

128123
// VARIABLE OPERATORS
129-
map.put("map", mapArgumentAggregationMethodReference().forOperator("$map") //
124+
map.put("map", mapArgRef().forOperator("$map") //
130125
.mappingParametersTo("input", "as", "in"));
131-
map.put("let", mapArgumentAggregationMethodReference().forOperator("$let").mappingParametersTo("vars", "in"));
126+
map.put("let", mapArgRef().forOperator("$let").mappingParametersTo("vars", "in"));
132127

133128
// LITERAL OPERATORS
134-
map.put("literal", singleArgumentAggregationMethodReference().forOperator("$literal"));
129+
map.put("literal", singleArgRef().forOperator("$literal"));
135130

136131
// DATE OPERATORS
137-
map.put("dayOfYear", singleArgumentAggregationMethodReference().forOperator("$dayOfYear"));
138-
map.put("dayOfMonth", singleArgumentAggregationMethodReference().forOperator("$dayOfMonth"));
139-
map.put("dayOfWeek", singleArgumentAggregationMethodReference().forOperator("$dayOfWeek"));
140-
map.put("year", singleArgumentAggregationMethodReference().forOperator("$year"));
141-
map.put("month", singleArgumentAggregationMethodReference().forOperator("$month"));
142-
map.put("week", singleArgumentAggregationMethodReference().forOperator("$week"));
143-
map.put("hour", singleArgumentAggregationMethodReference().forOperator("$hour"));
144-
map.put("minute", singleArgumentAggregationMethodReference().forOperator("$minute"));
145-
map.put("second", singleArgumentAggregationMethodReference().forOperator("$second"));
146-
map.put("millisecond", singleArgumentAggregationMethodReference().forOperator("$millisecond"));
147-
map.put("dateToString", mapArgumentAggregationMethodReference().forOperator("$dateToString") //
132+
map.put("dayOfYear", singleArgRef().forOperator("$dayOfYear"));
133+
map.put("dayOfMonth", singleArgRef().forOperator("$dayOfMonth"));
134+
map.put("dayOfWeek", singleArgRef().forOperator("$dayOfWeek"));
135+
map.put("year", singleArgRef().forOperator("$year"));
136+
map.put("month", singleArgRef().forOperator("$month"));
137+
map.put("week", singleArgRef().forOperator("$week"));
138+
map.put("hour", singleArgRef().forOperator("$hour"));
139+
map.put("minute", singleArgRef().forOperator("$minute"));
140+
map.put("second", singleArgRef().forOperator("$second"));
141+
map.put("millisecond", singleArgRef().forOperator("$millisecond"));
142+
map.put("dateToString", mapArgRef().forOperator("$dateToString") //
148143
.mappingParametersTo("format", "date"));
149-
map.put("dateFromString", mapArgumentAggregationMethodReference().forOperator("$dateFromString") //
144+
map.put("dateFromString", mapArgRef().forOperator("$dateFromString") //
150145
.mappingParametersTo("dateString", "format", "timezone", "onError", "onNull"));
151-
map.put("dateFromParts", mapArgumentAggregationMethodReference().forOperator("$dateFromParts")
152-
.mappingParametersTo("year", "month", "day", "hour", "minute", "second", "milliseconds", "timezone"));
153-
map.put("isoDateFromParts",
154-
mapArgumentAggregationMethodReference().forOperator("$dateFromParts").mappingParametersTo("isoWeekYear",
155-
"isoWeek", "isoDayOfWeek", "hour", "minute", "second", "milliseconds", "timezone"));
156-
map.put("dateToParts", mapArgumentAggregationMethodReference().forOperator("$dateToParts") //
146+
map.put("dateFromParts", mapArgRef().forOperator("$dateFromParts").mappingParametersTo("year", "month", "day",
147+
"hour", "minute", "second", "milliseconds", "timezone"));
148+
map.put("isoDateFromParts", mapArgRef().forOperator("$dateFromParts").mappingParametersTo("isoWeekYear", "isoWeek",
149+
"isoDayOfWeek", "hour", "minute", "second", "milliseconds", "timezone"));
150+
map.put("dateToParts", mapArgRef().forOperator("$dateToParts") //
157151
.mappingParametersTo("date", "timezone", "iso8601"));
158-
map.put("isoDayOfWeek", singleArgumentAggregationMethodReference().forOperator("$isoDayOfWeek"));
159-
map.put("isoWeek", singleArgumentAggregationMethodReference().forOperator("$isoWeek"));
160-
map.put("isoWeekYear", singleArgumentAggregationMethodReference().forOperator("$isoWeekYear"));
152+
map.put("isoDayOfWeek", singleArgRef().forOperator("$isoDayOfWeek"));
153+
map.put("isoWeek", singleArgRef().forOperator("$isoWeek"));
154+
map.put("isoWeekYear", singleArgRef().forOperator("$isoWeekYear"));
161155

162156
// CONDITIONAL OPERATORS
163-
map.put("cond", mapArgumentAggregationMethodReference().forOperator("$cond") //
157+
map.put("cond", mapArgRef().forOperator("$cond") //
164158
.mappingParametersTo("if", "then", "else"));
165-
map.put("ifNull", arrayArgumentAggregationMethodReference().forOperator("$ifNull"));
159+
map.put("ifNull", arrayArgRef().forOperator("$ifNull"));
166160

167161
// GROUP OPERATORS
168-
map.put("sum", arrayArgumentAggregationMethodReference().forOperator("$sum"));
169-
map.put("avg", arrayArgumentAggregationMethodReference().forOperator("$avg"));
170-
map.put("first", singleArgumentAggregationMethodReference().forOperator("$first"));
171-
map.put("last", singleArgumentAggregationMethodReference().forOperator("$last"));
172-
map.put("max", arrayArgumentAggregationMethodReference().forOperator("$max"));
173-
map.put("min", arrayArgumentAggregationMethodReference().forOperator("$min"));
174-
map.put("push", singleArgumentAggregationMethodReference().forOperator("$push"));
175-
map.put("addToSet", singleArgumentAggregationMethodReference().forOperator("$addToSet"));
176-
map.put("stdDevPop", arrayArgumentAggregationMethodReference().forOperator("$stdDevPop"));
177-
map.put("stdDevSamp", arrayArgumentAggregationMethodReference().forOperator("$stdDevSamp"));
162+
map.put("sum", arrayArgRef().forOperator("$sum"));
163+
map.put("avg", arrayArgRef().forOperator("$avg"));
164+
map.put("first", singleArgRef().forOperator("$first"));
165+
map.put("last", singleArgRef().forOperator("$last"));
166+
map.put("max", arrayArgRef().forOperator("$max"));
167+
map.put("min", arrayArgRef().forOperator("$min"));
168+
map.put("push", singleArgRef().forOperator("$push"));
169+
map.put("addToSet", singleArgRef().forOperator("$addToSet"));
170+
map.put("stdDevPop", arrayArgRef().forOperator("$stdDevPop"));
171+
map.put("stdDevSamp", arrayArgRef().forOperator("$stdDevSamp"));
178172

179173
// TYPE OPERATORS
180-
map.put("type", singleArgumentAggregationMethodReference().forOperator("$type"));
174+
map.put("type", singleArgRef().forOperator("$type"));
181175

182176
// OBJECT OPERATORS
183-
map.put("objectToArray", singleArgumentAggregationMethodReference().forOperator("$objectToArray"));
184-
map.put("mergeObjects", arrayArgumentAggregationMethodReference().forOperator("$mergeObjects"));
177+
map.put("objectToArray", singleArgRef().forOperator("$objectToArray"));
178+
map.put("mergeObjects", arrayArgRef().forOperator("$mergeObjects"));
185179

186180
// CONVERT OPERATORS
187-
map.put("convert", mapArgumentAggregationMethodReference().forOperator("$convert") //
181+
map.put("convert", mapArgRef().forOperator("$convert") //
188182
.mappingParametersTo("input", "to", "onError", "onNull"));
189-
map.put("toBool", singleArgumentAggregationMethodReference().forOperator("$toBool"));
190-
map.put("toDate", singleArgumentAggregationMethodReference().forOperator("$toDate"));
191-
map.put("toDecimal", singleArgumentAggregationMethodReference().forOperator("$toDecimal"));
192-
map.put("toDouble", singleArgumentAggregationMethodReference().forOperator("$toDouble"));
193-
map.put("toInt", singleArgumentAggregationMethodReference().forOperator("$toInt"));
194-
map.put("toLong", singleArgumentAggregationMethodReference().forOperator("$toLong"));
195-
map.put("toObjectId", singleArgumentAggregationMethodReference().forOperator("$toObjectId"));
196-
map.put("toString", singleArgumentAggregationMethodReference().forOperator("$toString"));
197-
198-
183+
map.put("toBool", singleArgRef().forOperator("$toBool"));
184+
map.put("toDate", singleArgRef().forOperator("$toDate"));
185+
map.put("toDecimal", singleArgRef().forOperator("$toDecimal"));
186+
map.put("toDouble", singleArgRef().forOperator("$toDouble"));
187+
map.put("toInt", singleArgRef().forOperator("$toInt"));
188+
map.put("toLong", singleArgRef().forOperator("$toLong"));
189+
map.put("toObjectId", singleArgRef().forOperator("$toObjectId"));
190+
map.put("toString", singleArgRef().forOperator("$toString"));
199191

200192
FUNCTIONS = Collections.unmodifiableMap(map);
201193
}
@@ -207,7 +199,7 @@ public class MethodReferenceNode extends ExpressionNode {
207199
/**
208200
* Returns the name of the method.
209201
*
210-
* @Deprecated since 1.10. Please use {@link #getMethodReference()}.
202+
* @deprecated since 1.10. Please use {@link #getMethodReference()}.
211203
*/
212204
@Nullable
213205
@Deprecated
@@ -290,7 +282,7 @@ public String[] getArgumentMap() {
290282
*
291283
* @return never {@literal null}.
292284
*/
293-
static AggregationMethodReference singleArgumentAggregationMethodReference() {
285+
static AggregationMethodReference singleArgRef() {
294286
return new AggregationMethodReference(null, ArgumentType.SINGLE, null);
295287
}
296288

@@ -299,7 +291,7 @@ static AggregationMethodReference singleArgumentAggregationMethodReference() {
299291
*
300292
* @return never {@literal null}.
301293
*/
302-
static AggregationMethodReference arrayArgumentAggregationMethodReference() {
294+
static AggregationMethodReference arrayArgRef() {
303295
return new AggregationMethodReference(null, ArgumentType.ARRAY, null);
304296
}
305297

@@ -308,7 +300,7 @@ static AggregationMethodReference arrayArgumentAggregationMethodReference() {
308300
*
309301
* @return never {@literal null}.
310302
*/
311-
static AggregationMethodReference mapArgumentAggregationMethodReference() {
303+
static AggregationMethodReference mapArgRef() {
312304
return new AggregationMethodReference(null, ArgumentType.MAP, null);
313305
}
314306

src/main/asciidoc/new-features.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* <<mongo.query.kotlin-support,Type-safe Queries for Kotlin>>
77
* <<mongodb.reactive.repositories.queries.type-safe,Querydsl support for reactive repositories>> via `ReactiveQuerydslPredicateExecutor`.
88
* <<reactive.gridfs,Reactive GridFS support>>.
9+
* Extended SpEL aggregation support for MongoDB 3.4 and MongoDB 4.0 operators (see <<mongo.aggregation.projection.expressions>>).
910

1011
[[new-features.2-1-0]]
1112
== What's New in Spring Data MongoDB 2.1

0 commit comments

Comments
 (0)