diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/exec/projection_exec.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/exec/projection_exec.h | 2 | ||||
-rw-r--r-- | src/mongo/db/exec/sort.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/fts/fts_command_mongod.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/query/lite_parsed_query.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/query/lite_parsed_query.h | 8 | ||||
-rw-r--r-- | src/mongo/db/query/lite_parsed_query_test.cpp | 30 | ||||
-rw-r--r-- | src/mongo/db/query/parsed_projection.cpp | 4 |
8 files changed, 35 insertions, 35 deletions
diff --git a/src/mongo/db/exec/projection_exec.cpp b/src/mongo/db/exec/projection_exec.cpp index ae28683d377..7964cd6dd14 100644 --- a/src/mongo/db/exec/projection_exec.cpp +++ b/src/mongo/db/exec/projection_exec.cpp @@ -121,8 +121,8 @@ namespace mongo { } else if (mongoutils::str::equals(e2.fieldName(), "$meta")) { verify(String == e2.type()); - if (mongoutils::str::equals(e2.valuestr(), "text")) { - _meta[e.fieldName()] = META_TEXT; + if (mongoutils::str::equals(e2.valuestr(), "textScore")) { + _meta[e.fieldName()] = META_TEXT_SCORE; } else if (mongoutils::str::equals(e2.valuestr(), "diskloc")) { _meta[e.fieldName()] = META_DISKLOC; @@ -323,7 +323,7 @@ namespace mongo { "near loc proj requested but no data available"); } } - else if (META_TEXT == it->second) { + else if (META_TEXT_SCORE == it->second) { if (member->hasComputed(WSM_COMPUTED_TEXT_SCORE)) { const TextScoreComputedData* score = static_cast<const TextScoreComputedData*>( diff --git a/src/mongo/db/exec/projection_exec.h b/src/mongo/db/exec/projection_exec.h index 95b4396aecb..f1c4712747f 100644 --- a/src/mongo/db/exec/projection_exec.h +++ b/src/mongo/db/exec/projection_exec.h @@ -52,7 +52,7 @@ namespace mongo { * document / query. */ enum MetaProjection { - META_TEXT, + META_TEXT_SCORE, META_GEONEAR_DIST, META_GEONEAR_POINT, META_DISKLOC, diff --git a/src/mongo/db/exec/sort.cpp b/src/mongo/db/exec/sort.cpp index dd18715a374..de55f0b7a67 100644 --- a/src/mongo/db/exec/sort.cpp +++ b/src/mongo/db/exec/sort.cpp @@ -84,10 +84,10 @@ namespace mongo { comparatorBob.append(elt); btreeBob.append(elt); } - else if (LiteParsedQuery::isTextMeta(elt)) { + else if (LiteParsedQuery::isTextScoreMeta(elt)) { // Sort text score decreasing by default. Field name doesn't matter but we choose // something that a user shouldn't ever have. - comparatorBob.append("$meta_text", -1); + comparatorBob.append("$metaTextScore", -1); _sortHasMeta = true; } else { @@ -147,7 +147,7 @@ namespace mongo { // Merge btree key elt. mergedKeyBob.append(btreeIt.next()); } - else if (LiteParsedQuery::isTextMeta(elt)) { + else if (LiteParsedQuery::isTextScoreMeta(elt)) { // Add text score metadata double score = 0.0; if (member.hasComputed(WSM_COMPUTED_TEXT_SCORE)) { @@ -156,7 +156,7 @@ namespace mongo { member.getComputed(WSM_COMPUTED_TEXT_SCORE)); score = scoreData->getScore(); } - mergedKeyBob.append("$meta_text", score); + mergedKeyBob.append("$metaTextScore", score); } } diff --git a/src/mongo/db/fts/fts_command_mongod.cpp b/src/mongo/db/fts/fts_command_mongod.cpp index e4ec4b56d95..8ea994fe4a5 100644 --- a/src/mongo/db/fts/fts_command_mongod.cpp +++ b/src/mongo/db/fts/fts_command_mongod.cpp @@ -85,7 +85,7 @@ namespace mongo { BSONObj queryObj = queryBob.obj(); // We sort by the score. - BSONObj sortSpec = BSON("$s" << BSON("$meta" << "text")); + BSONObj sortSpec = BSON("$s" << BSON("$meta" << "textScore")); // We also project the score into the document and strip it out later during the reformatting // of the results. diff --git a/src/mongo/db/query/lite_parsed_query.cpp b/src/mongo/db/query/lite_parsed_query.cpp index 87ac0f1dda6..1996dd4a189 100644 --- a/src/mongo/db/query/lite_parsed_query.cpp +++ b/src/mongo/db/query/lite_parsed_query.cpp @@ -90,8 +90,8 @@ namespace mongo { } // static - bool LiteParsedQuery::isTextMeta(BSONElement elt) { - // elt must be foo: {$meta: "text"} + bool LiteParsedQuery::isTextScoreMeta(BSONElement elt) { + // elt must be foo: {$meta: "textScore"} if (mongo::Object != elt.type()) { return false; } @@ -108,7 +108,7 @@ namespace mongo { if (mongo::String != metaElt.type()) { return false; } - if (!mongoutils::str::equals("text", metaElt.valuestr())) { + if (!mongoutils::str::equals("textScore", metaElt.valuestr())) { return false; } // must have exactly 1 element @@ -152,7 +152,7 @@ namespace mongo { BSONObjIterator i(sortObj); while (i.more()) { BSONElement e = i.next(); - if (isTextMeta(e)) { + if (isTextScoreMeta(e)) { continue; } long long n = e.safeNumberLong(); @@ -169,7 +169,7 @@ namespace mongo { BSONObjIterator i(sortObj); while (i.more()) { BSONElement e = i.next(); - if (isTextMeta(e)) { + if (isTextScoreMeta(e)) { b.append(e); continue; } diff --git a/src/mongo/db/query/lite_parsed_query.h b/src/mongo/db/query/lite_parsed_query.h index a7eb8e0d195..deab008849e 100644 --- a/src/mongo/db/query/lite_parsed_query.h +++ b/src/mongo/db/query/lite_parsed_query.h @@ -66,9 +66,9 @@ namespace mongo { /** * Helper function to identify text search sort key - * Example: {a: {$meta: "text"}} + * Example: {a: {$meta: "textScore"}} */ - static bool isTextMeta(BSONElement elt); + static bool isTextScoreMeta(BSONElement elt); /** * Helper function to identify diskLoc projection @@ -81,7 +81,7 @@ namespace mongo { * Returns true if each element satisfies one of: * 1. a number with value 1 * 2. a number with value -1 - * 3. isTextMeta + * 3. isTextScoreMeta */ static bool isValidSortOrder(const BSONObj& sortObj); @@ -90,7 +90,7 @@ namespace mongo { * Each element of the object returned satisfies one of: * 1. a number with value 1 * 2. a number with value -1 - * 3. isTextMeta + * 3. isTextScoreMeta */ static BSONObj normalizeSortOrder(const BSONObj& sortObj); diff --git a/src/mongo/db/query/lite_parsed_query_test.cpp b/src/mongo/db/query/lite_parsed_query_test.cpp index d2bd886c69f..80c089e25de 100644 --- a/src/mongo/db/query/lite_parsed_query_test.cpp +++ b/src/mongo/db/query/lite_parsed_query_test.cpp @@ -120,23 +120,23 @@ namespace { // Text meta BSON element validation // - bool isFirstElementTextMeta(const char* sortStr) { + bool isFirstElementTextScoreMeta(const char* sortStr) { BSONObj sortObj = fromjson(sortStr); BSONElement elt = sortObj.firstElement(); - bool result = LiteParsedQuery::isTextMeta(elt); + bool result = LiteParsedQuery::isTextScoreMeta(elt); return result; } // Check validation of $meta expressions - TEST(LiteParsedQueryTest, IsTextMeta) { - // Valid text meta sort - ASSERT(isFirstElementTextMeta("{a: {$meta: \"text\"}}")); - - // Invalid text meta sorts - ASSERT_FALSE(isFirstElementTextMeta("{a: {$meta: 1}}")); - ASSERT_FALSE(isFirstElementTextMeta("{a: {$meta: \"image\"}}")); - ASSERT_FALSE(isFirstElementTextMeta("{a: {$world: \"text\"}}")); - ASSERT_FALSE(isFirstElementTextMeta("{a: {$meta: \"text\", b: 1}}")); + TEST(LiteParsedQueryTest, IsTextScoreMeta) { + // Valid textScore meta sort + ASSERT(isFirstElementTextScoreMeta("{a: {$meta: \"textScore\"}}")); + + // Invalid textScore meta sorts + ASSERT_FALSE(isFirstElementTextScoreMeta("{a: {$meta: 1}}")); + ASSERT_FALSE(isFirstElementTextScoreMeta("{a: {$meta: \"image\"}}")); + ASSERT_FALSE(isFirstElementTextScoreMeta("{a: {$world: \"textScore\"}}")); + ASSERT_FALSE(isFirstElementTextScoreMeta("{a: {$meta: \"textScore\", b: 1}}")); } void testSortOrder(bool expectedValid, const char* expectedStr, const char* sortStr) { @@ -161,7 +161,7 @@ namespace { // In a valid sort order, each element satisfies one of: // 1. a number with value 1 // 2. a number with value -1 - // 3. isTextMeta + // 3. isTextScoreMeta // TEST(LiteParsedQueryTest, NormalizeAndValidateSortOrder) { @@ -169,7 +169,7 @@ namespace { testSortOrder(true, "{}", "{}"); testSortOrder(true, "{a: 1}", "{a: 1}"); testSortOrder(true, "{a: -1}", "{a: -1}"); - testSortOrder(true, "{a: {$meta: \"text\"}}", "{a: {$meta: \"text\"}}"); + testSortOrder(true, "{a: {$meta: \"textScore\"}}", "{a: {$meta: \"textScore\"}}"); // Invalid sorts testSortOrder(false, "{a: 1}", "{a: 100}"); @@ -188,8 +188,8 @@ namespace { testSortOrder(false, "{a: 1}", "{a: \"bb\"}"); testSortOrder(false, "{a: 1}", "{a: {$meta: 1}}"); testSortOrder(false, "{a: 1}", "{a: {$meta: \"image\"}}"); - testSortOrder(false, "{a: 1}", "{a: {$world: \"text\"}}"); - testSortOrder(false, "{a: 1}", "{a: {$meta: \"text\", b: 1}}"); + testSortOrder(false, "{a: 1}", "{a: {$world: \"textScore\"}}"); + testSortOrder(false, "{a: 1}", "{a: {$meta: \"textScore\", b: 1}}"); } } // namespace diff --git a/src/mongo/db/query/parsed_projection.cpp b/src/mongo/db/query/parsed_projection.cpp index b972ca34f9e..02e232343b2 100644 --- a/src/mongo/db/query/parsed_projection.cpp +++ b/src/mongo/db/query/parsed_projection.cpp @@ -138,12 +138,12 @@ namespace mongo { } // Make sure the argument to $meta is something we recognize. - // e.g. {x: {$meta: "text"}} + // e.g. {x: {$meta: "textScore"}} if (String != e2.type()) { return Status(ErrorCodes::BadValue, "unexpected argument to $meta in proj"); } - if (!mongoutils::str::equals(e2.valuestr(), "text") + if (!mongoutils::str::equals(e2.valuestr(), "textScore") && !mongoutils::str::equals(e2.valuestr(), "diskloc") && !mongoutils::str::equals(e2.valuestr(), "indexKey") && !mongoutils::str::equals(e2.valuestr(), "geoNearDistance") |