38 lines
No EOL
956 B
JavaScript
38 lines
No EOL
956 B
JavaScript
// Check proper range combinations with or clauses overlapping non or portion of query SERVER-2302
|
|
|
|
t = db.jstests_indexm;
|
|
t.drop();
|
|
|
|
t.save( { a : [ { x : 1 } , { x : 2 } , { x : 3 } , { x : 4 } ] } )
|
|
|
|
function test(){
|
|
assert.eq( 1, t.count(
|
|
{
|
|
a : { x : 1 } ,
|
|
"$or" : [ { a : { x : 2 } } , { a : { x : 3 } } ]
|
|
}
|
|
) );
|
|
}
|
|
|
|
// The first find will return a result since there isn't an index.
|
|
test();
|
|
|
|
// Now create an index.
|
|
t.ensureIndex({"a":1});
|
|
test();
|
|
// SERVER-3105
|
|
//assert( !t.find(
|
|
// {
|
|
// a : { x : 1 } ,
|
|
// "$or" : [ { a : { x : 2 } } , { a : { x : 3 } } ]
|
|
// }
|
|
// ).explain().clauses );
|
|
|
|
// Now create a different index.
|
|
t.dropIndexes();
|
|
t.ensureIndex({"a.x":1});
|
|
test();
|
|
|
|
// Drop the indexes.
|
|
t.dropIndexes();
|
|
test(); |