2017-09-18 1 views
0

Ich habe folgende MongoDB Aggregationsanfrage zum Ausdruck bringen, die

[ 
    { $match: { "myfield":"X" }, 
    { $group: { 
      _id: { myfield: "$myfield" }, 
      count: { $sum: 1 }, 
      lt5w: { $sum: { $cond:{ if: { $gte: [ "$myDate", new Date(ISODate().getTime() - 1000 * 60 * 60 * 24 * 7 * 5) ] }, then: 1, else: 0 } } }, 
      gt12w: { $sum: { $cond:{ if: { $gte: [ new Date(ISODate().getTime() - 1000 * 60 * 60 * 24 * 7 * 12), "$myDate" ] }, then: 1, else: 0 } } } 
     } 
    } 
]) 

gut in MongoDB funktioniert Wie kann ich diese komplexe $ Summenoperation mit Spring Data MongoDB API ausdrücken?

group("myfield)) 
    .sum("???").as("lt5w") 
    .sum("???").as("gt12w") 
    .count().as("count"), 

Die sum() -Methode erwartet nur eine einfache Zeichenfolge. Nach diesem Ticket (geschlossen) https://jira.spring.io/browse/DATAMONGO-784 die Aggregation komplexe Operationen wie $ cmp unterstützen sollte und cond $

Update: Es scheint, dass die Summe (AggregationExpression ausdr) Version des Verfahrens here vergessen wird. min(), max(), first() haben diese Methodenversion.

Antwort