summaryrefslogtreecommitdiff
path: root/src/mongo/db/geo
diff options
context:
space:
mode:
authorHari Khalsa <hkhalsa@10gen.com>2013-04-23 18:17:57 -0400
committerHari Khalsa <hkhalsa@10gen.com>2013-04-23 18:18:17 -0400
commitd5b73a85510f8620d14ce2b40b61bbef9cf3911f (patch)
treedb049616db62309983ec5da1648ac660d18ef69d /src/mongo/db/geo
parent95b42ea5dfd7e8939c8eff9e7bf4a6442b7b14d3 (diff)
downloadmongo-d5b73a85510f8620d14ce2b40b61bbef9cf3911f.tar.gz
fix geo_near_random1.js by not messing up stats object in geoNear command
Diffstat (limited to 'src/mongo/db/geo')
-rw-r--r--src/mongo/db/geo/geonear.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/mongo/db/geo/geonear.cpp b/src/mongo/db/geo/geonear.cpp
index c262912c4c8..5f3df84dc39 100644
--- a/src/mongo/db/geo/geonear.cpp
+++ b/src/mongo/db/geo/geonear.cpp
@@ -34,6 +34,7 @@
#include "mongo/db/namespace_details.h"
#include "mongo/db/namespace-inl.h"
#include "mongo/db/pdfile.h"
+#include "mongo/platform/unordered_map.h"
namespace mongo {
@@ -113,10 +114,17 @@ namespace mongo {
return false;
}
+ unordered_map<string, double> statsMap;
+
if (1 == idxs.size()) {
result.append("ns", ns);
- twod_internal::TwoDGeoNearRunner::run2DGeoNear(d, idxs[0], cmdObj, commonArgs, errmsg, result);
+ twod_internal::TwoDGeoNearRunner::run2DGeoNear(d, idxs[0], cmdObj, commonArgs,
+ errmsg, result, &statsMap);
BSONObjBuilder stats(result.subobjStart("stats"));
+ for (unordered_map<string, double>::const_iterator it = statsMap.begin();
+ it != statsMap.end(); ++it) {
+ stats.append(it->first, it->second);
+ }
stats.append("time", cc().curop()->elapsedMillis());
stats.done();
return true;
@@ -131,9 +139,6 @@ namespace mongo {
if (1 == idxs.size()) {
result.append("ns", ns);
run2DSphereGeoNear(d, idxs[0], cmdObj, commonArgs, errmsg, result);
- BSONObjBuilder stats(result.subobjStart("stats"));
- stats.append("time", cc().curop()->elapsedMillis());
- stats.done();
return true;
}
@@ -225,6 +230,7 @@ namespace mongo {
stats.appendNumber("nscanned", nic->nscanned());
stats.append("avgDistance", totalDistance / results);
stats.append("maxDistance", farthestDist);
+ stats.append("time", cc().curop()->elapsedMillis());
stats.done();
return true;