diff options
author | Eliot Horowitz <eliot@10gen.com> | 2013-05-17 12:19:47 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2013-05-17 12:25:23 -0400 |
commit | 3760b413f72b7ac827d46b35ca0b629fc36063a9 (patch) | |
tree | af46468f49b29c2fb3511b535f187bfef9f9877c /src | |
parent | 4e25efbff5ccfe66950600d1004682f5c7fa4c01 (diff) | |
download | mongo-3760b413f72b7ac827d46b35ca0b629fc36063a9.tar.gz |
SERVER-6400: $ne is $not + $eq
Diffstat (limited to 'src')
-rw-r--r-- | src/mongo/db/matcher/expression_parser.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mongo/db/matcher/expression_parser.cpp b/src/mongo/db/matcher/expression_parser.cpp index d8531c4675c..66e3ca21586 100644 --- a/src/mongo/db/matcher/expression_parser.cpp +++ b/src/mongo/db/matcher/expression_parser.cpp @@ -75,8 +75,16 @@ namespace mongo { return _parseComparison( name, new GTMatchExpression(), e ); case BSONObj::GTE: return _parseComparison( name, new GTEMatchExpression(), e ); - case BSONObj::NE: - return _parseComparison( name, new NEMatchExpression(), e ); + case BSONObj::NE: { + StatusWithMatchExpression s = _parseComparison( name, new EqualityMatchExpression(), e ); + if ( !s.isOK() ) + return s; + std::auto_ptr<NotMatchExpression> n( new NotMatchExpression() ); + Status s2 = n->init( s.getValue() ); + if ( !s2.isOK() ) + return StatusWithMatchExpression( s2 ); + return StatusWithMatchExpression( n.release() ); + } case BSONObj::Equality: return _parseComparison( name, new EqualityMatchExpression(), e ); |