t = db.find5; t.drop(); t.save({a: 1}); t.save({b: 5}); assert.eq(2, t.find({}, {b: 1}).count(), "A"); function getIds(f) { return t.find({}, f).map(function(z) { return z._id; }); } assert.eq(Array.tojson(getIds(null)), Array.tojson(getIds({})), "B1 "); assert.eq(Array.tojson(getIds(null)), Array.tojson(getIds({a: 1})), "B2 "); assert.eq(Array.tojson(getIds(null)), Array.tojson(getIds({b: 1})), "B3 "); assert.eq(Array.tojson(getIds(null)), Array.tojson(getIds({c: 1})), "B4 "); x = t.find({}, {a: 1})[0]; assert.eq(1, x.a, "C1"); assert.isnull(x.b, "C2"); x = t.find({}, {a: 1})[1]; assert.isnull(x.a, "C3"); assert.isnull(x.b, "C4"); x = t.find({}, {b: 1})[0]; assert.isnull(x.a, "C5"); assert.isnull(x.b, "C6"); x = t.find({}, {b: 1})[1]; assert.isnull(x.a, "C7"); assert.eq(5, x.b, "C8"); t.drop(); t.save({a: 1, b: {c: 2, d: 3, e: 4}}); assert.eq(2, t.find({}, {"b.c": 1}).toArray()[0].b.c, "D"); o = t.find({}, {"b.c": 1, "b.d": 1}).toArray()[0]; assert(o.b.c, "E 1"); assert(o.b.d, "E 2"); assert(!o.b.e, "E 3"); assert(!t.find({}, {"b.c": 1}).toArray()[0].b.d, "F"); t.drop(); t.save({a: {b: {c: 1}}}); assert.eq(1, t.find({}, {"a.b.c": 1})[0].a.b.c, "G");