summaryrefslogtreecommitdiff
path: root/src/mongo/db/keypattern.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/keypattern.h')
-rw-r--r--src/mongo/db/keypattern.h141
1 files changed, 72 insertions, 69 deletions
diff --git a/src/mongo/db/keypattern.h b/src/mongo/db/keypattern.h
index 78e1f3d59bf..f9ac83983e3 100644
--- a/src/mongo/db/keypattern.h
+++ b/src/mongo/db/keypattern.h
@@ -33,85 +33,88 @@
namespace mongo {
+/**
+ * A KeyPattern is an expression describing a transformation of a document into a
+ * document key. Document keys are used to store documents in indices and to target
+ * sharded queries.
+ *
+ * The root field names of KeyPatterns are always (potentially-dotted) paths, and the values of
+ * the fields describe the type of indexing over the found elements.
+ *
+ * Examples:
+ * { a : 1 }
+ * { a : 1 , b : -1 }
+ * { a : "hashed" }
+ */
+class KeyPattern {
+public:
/**
- * A KeyPattern is an expression describing a transformation of a document into a
- * document key. Document keys are used to store documents in indices and to target
- * sharded queries.
- *
- * The root field names of KeyPatterns are always (potentially-dotted) paths, and the values of
- * the fields describe the type of indexing over the found elements.
- *
- * Examples:
- * { a : 1 }
- * { a : 1 , b : -1 }
- * { a : "hashed" }
+ * Is the provided key pattern the index over the ID field?
+ * The always required ID index is always {_id: 1} or {_id: -1}.
*/
- class KeyPattern {
- public:
-
- /**
- * Is the provided key pattern the index over the ID field?
- * The always required ID index is always {_id: 1} or {_id: -1}.
- */
- static bool isIdKeyPattern(const BSONObj& pattern);
+ static bool isIdKeyPattern(const BSONObj& pattern);
- /**
- * Is the provided key pattern ordered increasing or decreasing or not?
- */
- static bool isOrderedKeyPattern(const BSONObj& pattern);
+ /**
+ * Is the provided key pattern ordered increasing or decreasing or not?
+ */
+ static bool isOrderedKeyPattern(const BSONObj& pattern);
- /**
- * Does the provided key pattern hash its keys?
- */
- static bool isHashedKeyPattern(const BSONObj& pattern);
+ /**
+ * Does the provided key pattern hash its keys?
+ */
+ static bool isHashedKeyPattern(const BSONObj& pattern);
- /**
- * Constructs a new key pattern based on a BSON document
- */
- KeyPattern(const BSONObj& pattern);
+ /**
+ * Constructs a new key pattern based on a BSON document
+ */
+ KeyPattern(const BSONObj& pattern);
- /**
- * Returns a BSON representation of this KeyPattern.
- */
- const BSONObj& toBSON() const { return _pattern; }
+ /**
+ * Returns a BSON representation of this KeyPattern.
+ */
+ const BSONObj& toBSON() const {
+ return _pattern;
+ }
- /**
- * Returns a string representation of this KeyPattern
- */
- std::string toString() const{ return toBSON().toString(); }
+ /**
+ * Returns a string representation of this KeyPattern
+ */
+ std::string toString() const {
+ return toBSON().toString();
+ }
- /* Takes a BSONObj whose field names are a prefix of the fields in this keyPattern, and
- * outputs a new bound with MinKey values appended to match the fields in this keyPattern
- * (or MaxKey values for descending -1 fields). This is useful in sharding for
- * calculating chunk boundaries when tag ranges are specified on a prefix of the actual
- * shard key, or for calculating index bounds when the shard key is a prefix of the actual
- * index used.
- *
- * @param makeUpperInclusive If true, then MaxKeys instead of MinKeys will be appended, so
- * that the output bound will compare *greater* than the bound being extended (note that
- * -1's in the keyPattern will swap MinKey/MaxKey vals. See examples).
- *
- * Examples:
- * If this keyPattern is {a : 1}
- * extendRangeBound( {a : 55}, false) --> {a : 55}
- *
- * If this keyPattern is {a : 1, b : 1}
- * extendRangeBound( {a : 55}, false) --> {a : 55, b : MinKey}
- * extendRangeBound( {a : 55}, true ) --> {a : 55, b : MaxKey}
- *
- * If this keyPattern is {a : 1, b : -1}
- * extendRangeBound( {a : 55}, false) --> {a : 55, b : MaxKey}
- * extendRangeBound( {a : 55}, true ) --> {a : 55, b : MinKey}
- */
- BSONObj extendRangeBound( const BSONObj& bound , bool makeUpperInclusive ) const;
+ /* Takes a BSONObj whose field names are a prefix of the fields in this keyPattern, and
+ * outputs a new bound with MinKey values appended to match the fields in this keyPattern
+ * (or MaxKey values for descending -1 fields). This is useful in sharding for
+ * calculating chunk boundaries when tag ranges are specified on a prefix of the actual
+ * shard key, or for calculating index bounds when the shard key is a prefix of the actual
+ * index used.
+ *
+ * @param makeUpperInclusive If true, then MaxKeys instead of MinKeys will be appended, so
+ * that the output bound will compare *greater* than the bound being extended (note that
+ * -1's in the keyPattern will swap MinKey/MaxKey vals. See examples).
+ *
+ * Examples:
+ * If this keyPattern is {a : 1}
+ * extendRangeBound( {a : 55}, false) --> {a : 55}
+ *
+ * If this keyPattern is {a : 1, b : 1}
+ * extendRangeBound( {a : 55}, false) --> {a : 55, b : MinKey}
+ * extendRangeBound( {a : 55}, true ) --> {a : 55, b : MaxKey}
+ *
+ * If this keyPattern is {a : 1, b : -1}
+ * extendRangeBound( {a : 55}, false) --> {a : 55, b : MaxKey}
+ * extendRangeBound( {a : 55}, true ) --> {a : 55, b : MinKey}
+ */
+ BSONObj extendRangeBound(const BSONObj& bound, bool makeUpperInclusive) const;
- BSONObj globalMin() const;
+ BSONObj globalMin() const;
- BSONObj globalMax() const;
+ BSONObj globalMax() const;
- private:
- BSONObj _pattern;
- };
+private:
+ BSONObj _pattern;
+};
-} // namespace mongo
+} // namespace mongo