diff options
Diffstat (limited to 'src/mongo/db/index/external_key_generator.cpp')
-rw-r--r-- | src/mongo/db/index/external_key_generator.cpp | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/mongo/db/index/external_key_generator.cpp b/src/mongo/db/index/external_key_generator.cpp index 1a4a17eba77..89d94ea0bbe 100644 --- a/src/mongo/db/index/external_key_generator.cpp +++ b/src/mongo/db/index/external_key_generator.cpp @@ -28,13 +28,14 @@ #include "mongo/db/index/external_key_generator.h" -#include "mongo/db/fts/fts_index_format.h" -#include "mongo/db/geo/s2common.h" -#include "mongo/db/index_names.h" -#include "mongo/db/index/2d_common.h" +#include "mongo/db/index/2d_key_generator.h" #include "mongo/db/index/btree_key_generator.h" -#include "mongo/db/index/expression_keys_private.h" #include "mongo/db/index/expression_params.h" +#include "mongo/db/index/fts_key_generator.h" +#include "mongo/db/index/hash_key_generator.h" +#include "mongo/db/index/haystack_key_generator.h" +#include "mongo/db/index/s2_key_generator.h" +#include "mongo/db/index_names.h" #include "mongo/db/jsobj.h" namespace mongo { @@ -51,30 +52,34 @@ namespace { if (IndexNames::GEO_2D == type) { TwoDIndexingParams params; ExpressionParams::parseTwoDParams(infoObj, ¶ms); - ExpressionKeysPrivate::get2DKeys(doc, params, keys, NULL); + TwoDKeyGenerator gen( params ); + gen.getKeys( doc, keys ); } else if (IndexNames::GEO_HAYSTACK == type) { string geoField; vector<string> otherFields; double bucketSize; ExpressionParams::parseHaystackParams(infoObj, &geoField, &otherFields, &bucketSize); - ExpressionKeysPrivate::getHaystackKeys(doc, geoField, otherFields, bucketSize, keys); + HaystackKeyGenerator gen( geoField, otherFields, bucketSize ); + gen.getKeys( doc, keys ); } else if (IndexNames::GEO_2DSPHERE == type) { S2IndexingParams params; ExpressionParams::parse2dsphereParams(infoObj, ¶ms); - ExpressionKeysPrivate::getS2Keys(doc, keyPattern, params, keys); + S2KeyGenerator gen( keyPattern, params ); + gen.getKeys( doc, keys ); } else if (IndexNames::TEXT == type) { - fts::FTSSpec spec(infoObj); - ExpressionKeysPrivate::getFTSKeys(doc, spec, keys); + FTSKeyGenerator gen(infoObj); + gen.getKeys( doc, keys ); } else if (IndexNames::HASHED == type) { HashSeed seed; int version; string field; ExpressionParams::parseHashParams(infoObj, &seed, &version, &field); - ExpressionKeysPrivate::getHashKeys(doc, field, seed, version, infoObj["sparse"].trueValue(), keys); + HashKeyGenerator gen( field, seed, version, infoObj["sparse"].trueValue() ); + gen.getKeys( doc, keys ); } else { invariant(IndexNames::BTREE == type); |