2015-11-06 95 views
2

我想知道如何在一個AggregationPipeline中使用multiply inside sum靜態方法,在Java中使用Morphia的同一個字段。Morphia - AggregationPipeline計算字段

這樣的事情,在嗎啡:

new BasicDBObject("totalSales", 
       new BasicDBObject("$sum", 
         new BasicDBObject("$multiply", 
           new String[]{"$value", "$amount"}))); 

在這個問題很相似:Calculated group-by fields in MongoDB

在此先感謝。

回答

1

在你aggregation framework,創建projection管道第一,做算術運算,然後使用您的group管道新的領域,這樣的事情:

Iterator<Foo> aggregate = datastore.createAggregation(Foo.class) 
     .project(projection("_id").suppress(), 
      projection("field1", "_id"), 
      projection("field2"), projection("field3"), 
      projection("sales", multiply(projection("value"), projection("amount")))) 
     .group("field3", grouping("totalSales", sum("sales"))); 
+0

後如何獲得totalSales運行命令 – Reza