2017-10-12 106 views
0

我想要統計集合中每個文檔的列表中元素的數量,類似於下面的示例。 (https://docs.mongodb.com/manual/reference/operator/aggregation/size/#exp._S_sizeMorphia聚合查詢獲取列表大小

db.inventory.aggregate(
    [ 
     { 
     $project: { 
      item: 1, 
      numberOfColors: { $size: "$colors" } 
     } 
     } 
    ] 
) 

此查詢將在每個文檔中返回的名單「顏色」的大小。

等效嗎啡查詢將是這樣的:

pipeline = ds.createAggregation(Abc.class) 
       .match(query) 
       .project(Projection.projection("count", 
       Projection.expression("$size","colors"))); 

錯誤上面執行:java.lang.String中不能轉換到com.mongodb.DBObject
我無法在同等到達嗎啡查詢實現相同。
在這方面的任何幫助將不勝感激。

+0

可能重複[在Mongo聚合管道中使用Morphia的操作符的正確方法](https://stackoverflow.com/questions/45214057/what-is-the-correct-way-to-use-operators -in-mongo-aggregation-pipelines-with-mor) – Veeram

+0

我嘗試過這裏提到的解決方案,但徒勞無功。 –

回答

0

你有沒有顏色之前嘗試

Projection.expression("$size","$colors"))); 

隨着美元?

+0

我只是試着用$,最後得到錯誤:java.lang.String不能轉換爲com.mongodb.DBObject –