diff options
Diffstat (limited to 'jstests/core/all4.js')
-rw-r--r-- | jstests/core/all4.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/jstests/core/all4.js b/jstests/core/all4.js new file mode 100644 index 00000000000..109795754bc --- /dev/null +++ b/jstests/core/all4.js @@ -0,0 +1,28 @@ +// Test $all/$elemMatch with missing field - SERVER-4492 + +t = db.jstests_all4; +t.drop(); + +function checkQuery( query, val ) { + assert.eq( val, t.count(query) ); + assert.eq( val, t.find(query).itcount() ); +} + +checkQuery( {a:{$all:[]}}, 0 ); +checkQuery( {a:{$all:[1]}}, 0 ); +checkQuery( {a:{$all:[{$elemMatch:{b:1}}]}}, 0 ); + +t.save({}); +checkQuery( {a:{$all:[]}}, 0 ); +checkQuery( {a:{$all:[1]}}, 0 ); +checkQuery( {a:{$all:[{$elemMatch:{b:1}}]}}, 0 ); + +t.save({a:1}); +checkQuery( {a:{$all:[]}}, 0 ); +checkQuery( {a:{$all:[1]}}, 1 ); +checkQuery( {a:{$all:[{$elemMatch:{b:1}}]}}, 0 ); + +t.save({a:[{b:1}]}); +checkQuery( {a:{$all:[]}}, 0 ); +checkQuery( {a:{$all:[1]}}, 1 ); +checkQuery( {a:{$all:[{$elemMatch:{b:1}}]}}, 1 ); |