2017-10-12 47 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 –