@@ -319,23 +319,47 @@ public GroupOperationBuilder max(AggregationExpression expr) {
319
319
* Generates an {@link GroupOperationBuilder} for an {@code $stdDevSamp}-expression that for the given
320
320
* field-reference.
321
321
*
322
- * @param reference
323
- * @return
322
+ * @param reference must not be {@literal null}.
323
+ * @return never {@literal null}.
324
+ * @since 1.10
324
325
*/
325
326
public GroupOperationBuilder stdDevSamp (String reference ) {
326
327
return newBuilder (GroupOps .STD_DEV_SAMP , reference , null );
327
328
}
328
329
330
+ /**
331
+ * Generates an {@link GroupOperationBuilder} for an {@code $stdDevSamp}-expression that for the given {@link AggregationExpression}.
332
+ *
333
+ * @param expr must not be {@literal null}.
334
+ * @return never {@literal null}.
335
+ * @since 1.10
336
+ */
337
+ public GroupOperationBuilder stdDevSamp (AggregationExpression expr ) {
338
+ return newBuilder (GroupOps .STD_DEV_SAMP , null , expr );
339
+ }
340
+
329
341
/**
330
342
* Generates an {@link GroupOperationBuilder} for an {@code $stdDevPop}-expression that for the given field-reference.
331
343
*
332
- * @param reference
333
- * @return
344
+ * @param reference must not be {@literal null}.
345
+ * @return never {@literal null}.
346
+ * @since 1.10
334
347
*/
335
348
public GroupOperationBuilder stdDevPop (String reference ) {
336
349
return newBuilder (GroupOps .STD_DEV_POP , reference , null );
337
350
}
338
351
352
+ /**
353
+ * Generates an {@link GroupOperationBuilder} for an {@code $stdDevPop}-expression that for the given {@link AggregationExpression}.
354
+ *
355
+ * @param expr must not be {@literal null}.
356
+ * @return never {@literal null}.
357
+ * @since 1.10
358
+ */
359
+ public GroupOperationBuilder stdDevPop (AggregationExpression expr ) {
360
+ return newBuilder (GroupOps .STD_DEV_POP , null , expr );
361
+ }
362
+
339
363
private GroupOperationBuilder newBuilder (Keyword keyword , String reference , Object value ) {
340
364
return new GroupOperationBuilder (this , new Operation (keyword , null , reference , value ));
341
365
}
@@ -400,21 +424,18 @@ interface Keyword {
400
424
401
425
private static enum GroupOps implements Keyword {
402
426
403
- SUM , LAST , FIRST , PUSH , AVG , MIN , MAX , ADD_TO_SET , COUNT , STD_DEV_SAMP , STD_DEV_POP ;
404
-
405
- @ Override
406
- public String toString () {
427
+ SUM ("$sum" ), LAST ("$last" ), FIRST ("$first" ), PUSH ("$push" ), AVG ("$avg" ), MIN ("$min" ), MAX ("$max" ), ADD_TO_SET ("$addToSet" ), STD_DEV_POP ("$stdDevPop" ), STD_DEV_SAMP ("$stdDevSamp" );
407
428
408
- String [] parts = name (). split ( "_" ) ;
429
+ private String mongoOperator ;
409
430
410
- StringBuilder builder = new StringBuilder ();
431
+ GroupOps (String mongoOperator ) {
432
+ this .mongoOperator = mongoOperator ;
433
+ }
411
434
412
- for (String part : parts ) {
413
- String lowerCase = part .toLowerCase (Locale .US );
414
- builder .append (builder .length () == 0 ? lowerCase : StringUtils .capitalize (lowerCase ));
415
- }
416
435
417
- return "$" + builder .toString ();
436
+ @ Override
437
+ public String toString () {
438
+ return mongoOperator ;
418
439
}
419
440
}
420
441
0 commit comments