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

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
我无法达到等效的语素查询来实现相同的目的。
在这方面的任何帮助将不胜感激。

最佳答案

更改以下代码行

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




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

07-28 14:13