下面的代码只投影一个带有键值对的字段,问题是如何分离值并添加它们并将其平均化。
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);
}
答案 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也是安全的。