Java 在Mongo聚合管道和Morphia中使用运算符的正确方法是什么
在此阶段,我的聚合管道中有两个文档:Java 在Mongo聚合管道和Morphia中使用运算符的正确方法是什么,java,mongodb,aggregation-framework,morphia,Java,Mongodb,Aggregation Framework,Morphia,在此阶段,我的聚合管道中有两个文档: { "_id" : "Piers Morgan", "entities" : ["Sexism", "Charlotte Hawkins","Red carpet"] } { "_id" : "Gareth Bale", "entities" : ["Sergio Busquets", "Real Madrid C.F.", "EFL Cup", "Copa del Rey"] } 我只想使用Java中的Morphia
{
"_id" : "Piers Morgan",
"entities" : ["Sexism", "Charlotte Hawkins","Red carpet"]
}
{
"_id" : "Gareth Bale",
"entities" : ["Sergio Busquets", "Real Madrid C.F.", "EFL Cup", "Copa del Rey"]
}
我只想使用Java中的Morphia返回一个投影,它是数组的id和大小。在Mongo中,这可以通过以下方式完成:
{ $project: { count : {$size : "$entities"} } }
在Morphia中,我尝试过:
.project(projection("count",
Projection.expression("$size", "entities")));
返回java.lang.ClassCastException:java.lang.String不能转换为com.mongodb.DBObject
Morphia中正确的等效表达式是什么?你应该使用
投影而不是表达式这样:
.project(projection("count",projection("$size", "entities" )))
您应该使用投影
而不是像这样使用表达式
:
.project(projection("count",projection("$size", "entities" )))
您是否尝试过“expression($size),“$entities”)?是的,但是expression方法需要一个DBObject作为其第二个参数,因此我仍然会得到classCastException。我的直觉是expression不是我想要的方法。你试过“expression($size),“$entities”)吗?是的,但是expression方法需要一个DBObject作为第二个参数,所以我仍然会得到classCastException。我的直觉是,表达不是我想要的方法。