40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
|
|
t = db.getCollection( "where1" );
|
|
t.drop();
|
|
|
|
t.save( { a : 1 } );
|
|
t.save( { a : 2 } );
|
|
t.save( { a : 3 } );
|
|
|
|
assert.eq( 1 , t.find( function(){ return this.a == 2; } ).length() , "A" );
|
|
|
|
assert.eq( 1 , t.find( { $where : "return this.a == 2" } ).toArray().length , "B" );
|
|
assert.eq( 1 , t.find( { $where : "this.a == 2" } ).toArray().length , "C" );
|
|
|
|
assert.eq( 1 , t.find( "this.a == 2" ).toArray().length , "D" );
|
|
|
|
// SERVER-12117
|
|
// positional $ projection should fail on a $where query
|
|
assert.throws( function() { t.find( { $where : "return this.a;" }, { 'a.$' : 1 } ).itcount(); } );
|
|
|
|
// SERVER-12439: $where must be top-level
|
|
assert.throws( function() { t.find( { a: 1, b: { $where : "this.a;" } } ).itcount(); } );
|
|
assert.throws( function() { t.find( { a: { $where : "this.a;" } } ).itcount(); } );
|
|
assert.throws( function() {
|
|
t.find( { a: { $elemMatch : { $where : "this.a;" } } } ).itcount();
|
|
} );
|
|
assert.throws( function() {
|
|
t.find( { a: 3, "b.c": { $where : "this.a;" } } ).itcount();
|
|
} );
|
|
|
|
// SERVER-13503
|
|
assert.throws( function() {
|
|
t.find( { a: { $elemMatch : { $where : "this.a;", b : 1 } } } ).itcount();
|
|
} );
|
|
assert.throws( function() {
|
|
t.find( { a: { $elemMatch : { b : 1, $where : "this.a;" } } } ).itcount();
|
|
} );
|
|
assert.throws( function() {
|
|
t.find( { a: { $elemMatch : { $and : [ { b : 1 }, { $where : "this.a;" } ] } } } ).itcount();
|
|
} );
|