Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Mongo聚合管道和Morphia中使用运算符的正确方法是什么_Java_Mongodb_Aggregation Framework_Morphia - Fatal编程技术网

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。我的直觉是,表达不是我想要的方法。