如何将值与MongoDB Java中的键值对分开,将值相加

时间:2018-04-17 11:06:03

标签: java mongodb

下面的代码只投影一个带有键值对的字段,问题是如何分离值并添加它们并将其平均化。

private static void selectAllRecordByRecordNumber(DBCollection collection) {
    BasicDBObject whereQuery = new BasicDBObject();
    BasicDBObject whereQuery1 = new BasicDBObject();
    BasicDBObject whereQuery2 = new BasicDBObject();
    BasicDBObject fields = new BasicDBObject("pr", 1);
    fields.put("_id", 0);
    int TotalPseudorange=0;
    whereQuery.put("st", 17);
    whereQuery2.put("pr",whereQuery);
    whereQuery1.put("pr",new BasicDBObject("st",17));
    DBCursor cursor = collection.find(whereQuery,fields);
    TotalPseudorange = TotalPseudorange + cursor.count();
    int count=cursor.count();
    int index_count=0;
    while(cursor.hasNext()) {
      System.out.println(cursor.next());
    }
    System.out.println("The calculation is complete & Done");
    System.out.println(count);
}

1 个答案:

答案 0 :(得分:0)

我认为你在迭代对象中寻找.get()方法:

while(cursor.hasNext()) {
  System.out.println(cursor.next().get("pr"));
}

然后你可以用以下内容替换上面的内容,以获得java8-fashion的平均值。

    StreamSupport.stream(Spliterators.spliteratorUnknownSize(cursor,
            Spliterator.ORDERED), false)
            .mapToDouble(item -> ((Number)item.get("pr")).doubleValue() )
            .summaryStatistics()
            .getAverage();

注意:我不确定get的返回类型是什么,但我认为直接转换为double也是安全的。