与$ match和$ gruop的mongodb java驱动程序

时间:2017-06-20 07:40:35

标签: java mongodb

当我在mongo shell上使用此查询时

db.matchgrup.aggregate([{$match:{ "longitude" : {"$gte":73.8172198689148,"$lte":73.8200133489148}, "latitude" :{"$gte":19.98591316489416,"$lte":19.98870664489416} }},{ "$group": {"_id":null, "band_4" : { "$avg" : "$band_4"},"band_8":{"$avg":"$band_8"} } }])

它返回

     { "_id" : null, "band_4" : 1578.8266666666666, "band_8" : 2649.0155555555557 }

但是当我使用mongo java驱动程序进行同样的查询时

              searchQuery1 =new BasicDBObject("longitude", new BasicDBObject("$gte", X.doubleValue()).append("$lte",  px1.doubleValue()));
             criteria.add(searchQuery1);
            searchQuery2=new BasicDBObject("latitude", new BasicDBObject("$gte", py2.doubleValue()).append("$lte",  Y.doubleValue() ));
             criteria.add(searchQuery2); 
              query2=new BasicDBObject("$and",criteria);
              group1 = new BasicDBObject();
             group1.put("_id", null);
             group1.put("band_4", new BasicDBObject("$avg", "$band_4"));
             group1.put("band_8", new BasicDBObject("$avg", "$band_8"));
              output = coll.aggregate(
                     new BasicDBObject("$match",query2),
                     new BasicDBObject("$group",group1));

             for (DBObject doc : output.results()) {
                 band4=(Double)doc.get("band_4");
                 band8=(Double)doc.get("band_8");
             }

并且它不会返回任何值,也不会进入doc循环 任何人都可以帮我解决出错的问题

0 个答案:

没有答案