【问题标题】:Morphia aggregation query to get size of listMorphia 聚合查询以获取列表的大小
【发布时间】:2017-10-12 08:22:51
【问题描述】:

我正在尝试计算集合中每个文档的列表中元素的数量,类似于下面的示例。 (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 查询来实现相同的目的。
在这方面的任何帮助将不胜感激。

【问题讨论】:

标签: java database mongodb aggregation-framework morphia


【解决方案1】:

更改以下代码行

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

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

【讨论】:

  • Projection.expression("count", Projection.projection("$size","colors")))
【解决方案2】:

你试过了吗

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

在颜色之前用美元?

【讨论】:

  • 我刚刚尝试使用 $,结果出现错误:java.lang.String cannot be cast to com.mongodb.DBObject
猜你喜欢
  • 1970-01-01
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 2017-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多