Morphia聚合查询以获取列表

时间:2017-10-12 08:22:52

标签: java database mongodb aggregation-framework morphia

我正在尝试计算集合中每个文档列表中的元素数量,类似于下面的示例。 (https://docs.mongodb.com/manual/reference/operator/aggregation/size/#exp._S_size

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

此查询将返回列表的大小"颜色"在每个文件中。

等效的morphia查询将是这样的:

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

执行上述错误:java.lang.String无法强制转换为com.mongodb.DBObject
我无法达到相同的morphia查询来实现相同的目标 在这方面的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你试过吗

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

用颜色之前的美元?

答案 1 :(得分:0)

更改以下代码行

project(Projection.projection("count", 
                 Projection.expression("$size","colors"))

Projection.expression("count",new BasicDBObject("$size","$colors")))