t = db.jstests_js8; t.drop(); t.save( { a : 1 , b : [ 2 , 3 , 4 ] } ); assert.eq( 1 , t.find().length() , "A" ); assert.eq( 1 , t.find( function(){ return this.a == 1; } ).length() , "B" ); assert.eq( 1 , t.find( function(){ if ( ! this.b.length ) return true; return this.b.length == 3; } ).length() , "B2" ); assert.eq( 1 , t.find( function(){ return this.b[0] == 2; } ).length() , "C" ); assert.eq( 0 , t.find( function(){ return this.b[0] == 3; } ).length() , "D" ); assert.eq( 1 , t.find( function(){ return this.b[1] == 3; } ).length() , "E" ); assert(t.validate().valid);