Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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:计算集合中每个项的数组元素数_Java_Mongodb_Mongodb Query - Fatal编程技术网

Java Mongo:计算集合中每个项的数组元素数

Java Mongo:计算集合中每个项的数组元素数,java,mongodb,mongodb-query,Java,Mongodb,Mongodb Query,日期示例(收藏名称“人物”) 目标:获取每个人文档的“合作”条目总数(累计总数) 预期结果5 我尝试过的 public int getTotalCoordinateCount(){ BasicDbObject project= new BasicDBObject() .append("count",new BasicDBObject("$size","coords")) AggregationOutput output = db.getPeopleCollection().ag

日期示例(收藏名称“人物”)

目标:获取每个人文档的“合作”条目总数(累计总数)

预期结果5

我尝试过的

public int getTotalCoordinateCount(){

  BasicDbObject project= new BasicDBObject()
  .append("count",new BasicDBObject("$size","coords"))

   AggregationOutput output = db.getPeopleCollection().aggregate(Arrays. <DBObject>asList(
     new BasicDBObject("$project", project);

    BasicDbObject result = (BasicDBObject)output.results().iterator.next();

   return result.getInt("count");

}
public int getTotalCoordinationCount(){
BasicDbObject项目=新的BasicDbObject()
.append(“count”,新的BasicDBObject(“$size”,“coords”))
AggregationOutput输出=db.getPeopleCollection().aggregate(Arrays.asList(
新的基本项目(“$project”,项目);
BasicDbObject结果=(BasicDbObject)output.results().iterator.next();
返回结果.getInt(“计数”);
}
问题我得到:2


我不知道我在mongo聚合框架中做错了什么。我怀疑我需要包含一个
$sum
,但不确定您需要在聚合管道中的
coords
字段上执行展开操作的位置。然后,使用
count
字段按
Null
分组,以计算结果集和y您将从所有文档的所有数组中获取元素总数。

public int getTotalCoordinationCount(){
public int getTotalCoordinateCount(){

  BasicDbObject group = new BasicDBObject()
  .append("_id", 1)
  .append("count", new BasicDBObject("$sum", 1));

  BasicDbObject project= new BasicDBObject()
  .append("_id", 0)
  .append("count", 1);

   AggregationOutput output = db.getPeopleCollection().aggregate(Arrays. <DBObject>asList(
     new BasicDBObject("$unwind", "coords"),
     new BasicDBObject("$group", group),
     new BasicDBObject("$project", project)
   );

    BasicDbObject result = (BasicDBObject)output.results().iterator.next();

   return result.getInt("count");

}
BasicDbObject组=新的BasicDbObject() .append(“\u id”,1) .append(“count”,新的BasicDBObject(“$sum”,1)); BasicDbObject项目=新的BasicDbObject() .append(“\u id”,0) .附加(“计数”,1); AggregationOutput输出=db.getPeopleCollection().aggregate(Arrays.asList( 新的BasicDBObject(“$unwind”,“coords”), 新的BasicDBObject(“$group”,group), 新BasicDBObject(“$project”,项目) ); BasicDbObject结果=(BasicDbObject)output.results().iterator.next(); 返回结果.getInt(“计数”); }
你能演示一下这会是什么样子吗?如果JSON格式更容易生成答案,你可以保留JSON格式。我不能用Java编写,但基本上你需要解开这个列表,这样你就会有x个文档,x是你的数字。看我的答案,我试着用Java为你写。@serigu谢谢,解开是你需要做的事情他失踪了
public int getTotalCoordinateCount(){

  BasicDbObject group = new BasicDBObject()
  .append("_id", 1)
  .append("count", new BasicDBObject("$sum", 1));

  BasicDbObject project= new BasicDBObject()
  .append("_id", 0)
  .append("count", 1);

   AggregationOutput output = db.getPeopleCollection().aggregate(Arrays. <DBObject>asList(
     new BasicDBObject("$unwind", "coords"),
     new BasicDBObject("$group", group),
     new BasicDBObject("$project", project)
   );

    BasicDbObject result = (BasicDBObject)output.results().iterator.next();

   return result.getInt("count");

}