diff options
author | Hari Khalsa <hkhalsa@10gen.com> | 2013-04-23 18:17:57 -0400 |
---|---|---|
committer | Hari Khalsa <hkhalsa@10gen.com> | 2013-04-23 18:18:17 -0400 |
commit | d5b73a85510f8620d14ce2b40b61bbef9cf3911f (patch) | |
tree | db049616db62309983ec5da1648ac660d18ef69d /src/mongo/db/geo | |
parent | 95b42ea5dfd7e8939c8eff9e7bf4a6442b7b14d3 (diff) | |
download | mongo-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.cpp | 14 |
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; |