diff options
Diffstat (limited to 'jstests/core/where1.js')
-rw-r--r-- | jstests/core/where1.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/jstests/core/where1.js b/jstests/core/where1.js new file mode 100644 index 00000000000..7ff20a53620 --- /dev/null +++ b/jstests/core/where1.js @@ -0,0 +1,28 @@ + +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(); +} ); |