summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2013-05-17 12:19:47 -0400
committerEliot Horowitz <eliot@10gen.com>2013-05-17 12:25:23 -0400
commit3760b413f72b7ac827d46b35ca0b629fc36063a9 (patch)
treeaf46468f49b29c2fb3511b535f187bfef9f9877c /src
parent4e25efbff5ccfe66950600d1004682f5c7fa4c01 (diff)
downloadmongo-3760b413f72b7ac827d46b35ca0b629fc36063a9.tar.gz
SERVER-6400: $ne is $not + $eq
Diffstat (limited to 'src')
-rw-r--r--src/mongo/db/matcher/expression_parser.cpp12
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 );