diff options
Diffstat (limited to 'src/mongo/db/keypattern.cpp')
-rw-r--r-- | src/mongo/db/keypattern.cpp | 105 |
1 files changed, 52 insertions, 53 deletions
diff --git a/src/mongo/db/keypattern.cpp b/src/mongo/db/keypattern.cpp index b62885b97d1..9ef77deb639 100644 --- a/src/mongo/db/keypattern.cpp +++ b/src/mongo/db/keypattern.cpp @@ -35,68 +35,67 @@ namespace mongo { - KeyPattern::KeyPattern( const BSONObj& pattern ): _pattern( pattern ) {} +KeyPattern::KeyPattern(const BSONObj& pattern) : _pattern(pattern) {} - bool KeyPattern::isIdKeyPattern(const BSONObj& pattern) { - BSONObjIterator i(pattern); - BSONElement e = i.next(); - // _id index must have form exactly {_id : 1} or {_id : -1}. - // Allows an index of form {_id : "hashed"} to exist but - // do not consider it to be the primary _id index - return (0 == strcmp(e.fieldName(), "_id")) - && (e.numberInt() == 1 || e.numberInt() == -1) - && i.next().eoo(); - } +bool KeyPattern::isIdKeyPattern(const BSONObj& pattern) { + BSONObjIterator i(pattern); + BSONElement e = i.next(); + // _id index must have form exactly {_id : 1} or {_id : -1}. + // Allows an index of form {_id : "hashed"} to exist but + // do not consider it to be the primary _id index + return (0 == strcmp(e.fieldName(), "_id")) && (e.numberInt() == 1 || e.numberInt() == -1) && + i.next().eoo(); +} - bool KeyPattern::isOrderedKeyPattern(const BSONObj& pattern) { - return IndexNames::BTREE == IndexNames::findPluginName(pattern); - } +bool KeyPattern::isOrderedKeyPattern(const BSONObj& pattern) { + return IndexNames::BTREE == IndexNames::findPluginName(pattern); +} - bool KeyPattern::isHashedKeyPattern(const BSONObj& pattern) { - return IndexNames::HASHED == IndexNames::findPluginName(pattern); - } +bool KeyPattern::isHashedKeyPattern(const BSONObj& pattern) { + return IndexNames::HASHED == IndexNames::findPluginName(pattern); +} - BSONObj KeyPattern::extendRangeBound( const BSONObj& bound , bool makeUpperInclusive ) const { - BSONObjBuilder newBound( bound.objsize() ); +BSONObj KeyPattern::extendRangeBound(const BSONObj& bound, bool makeUpperInclusive) const { + BSONObjBuilder newBound(bound.objsize()); - BSONObjIterator src( bound ); - BSONObjIterator pat( _pattern ); + BSONObjIterator src(bound); + BSONObjIterator pat(_pattern); - while( src.more() ){ - massert( 16649 , - str::stream() << "keyPattern " << _pattern << " shorter than bound " << bound, - pat.more() ); - BSONElement srcElt = src.next(); - BSONElement patElt = pat.next(); - massert( 16634 , - str::stream() << "field names of bound " << bound - << " do not match those of keyPattern " << _pattern , - str::equals( srcElt.fieldName() , patElt.fieldName() ) ); - newBound.append( srcElt ); - } - while( pat.more() ){ - BSONElement patElt = pat.next(); - // for non 1/-1 field values, like {a : "hashed"}, treat order as ascending - int order = patElt.isNumber() ? patElt.numberInt() : 1; - // flip the order semantics if this is an upper bound - if ( makeUpperInclusive ) order *= -1; + while (src.more()) { + massert(16649, + str::stream() << "keyPattern " << _pattern << " shorter than bound " << bound, + pat.more()); + BSONElement srcElt = src.next(); + BSONElement patElt = pat.next(); + massert(16634, + str::stream() << "field names of bound " << bound + << " do not match those of keyPattern " << _pattern, + str::equals(srcElt.fieldName(), patElt.fieldName())); + newBound.append(srcElt); + } + while (pat.more()) { + BSONElement patElt = pat.next(); + // for non 1/-1 field values, like {a : "hashed"}, treat order as ascending + int order = patElt.isNumber() ? patElt.numberInt() : 1; + // flip the order semantics if this is an upper bound + if (makeUpperInclusive) + order *= -1; - if( order > 0 ){ - newBound.appendMinKey( patElt.fieldName() ); - } - else { - newBound.appendMaxKey( patElt.fieldName() ); - } + if (order > 0) { + newBound.appendMinKey(patElt.fieldName()); + } else { + newBound.appendMaxKey(patElt.fieldName()); } - return newBound.obj(); } + return newBound.obj(); +} - BSONObj KeyPattern::globalMin() const { - return extendRangeBound(BSONObj(), false); - } +BSONObj KeyPattern::globalMin() const { + return extendRangeBound(BSONObj(), false); +} - BSONObj KeyPattern::globalMax() const { - return extendRangeBound(BSONObj(), true); - } +BSONObj KeyPattern::globalMax() const { + return extendRangeBound(BSONObj(), true); +} -} // namespace mongo +} // namespace mongo |