t = db.in2; function go(name, index) { t.drop(); t.save({a: 1, b: 1}); t.save({a: 1, b: 2}); t.save({a: 1, b: 3}); t.save({a: 1, b: 1}); t.save({a: 2, b: 2}); t.save({a: 3, b: 3}); t.save({a: 1, b: 1}); t.save({a: 2, b: 1}); t.save({a: 3, b: 1}); if (index) t.ensureIndex(index); assert.eq(7, t.find({a: {$in: [1, 2]}}).count(), name + " A"); assert.eq(6, t.find({a: {$in: [1, 2]}, b: {$in: [1, 2]}}).count(), name + " B"); } go("no index"); go("index on a", {a: 1}); go("index on b", {b: 1}); go("index on a&b", {a: 1, b: 1});