// @tags: [requires_getmore, requires_fastcount] t = db.count2; t.drop(); for (var i = 0; i < 1000; i++) { t.save({num: i, m: i % 20}); } assert.eq(1000, t.count(), "A"); assert.eq(1000, t.find().count(), "B"); assert.eq(1000, t.find().toArray().length, "C"); assert.eq(50, t.find({m: 5}).toArray().length, "D"); assert.eq(50, t.find({m: 5}).count(), "E"); assert.eq(40, t.find({m: 5}).skip(10).toArray().length, "F"); assert.eq(50, t.find({m: 5}).skip(10).count(), "G"); assert.eq(40, t.find({m: 5}).skip(10).countReturn(), "H"); assert.eq(20, t.find({m: 5}).skip(10).limit(20).toArray().length, "I"); assert.eq(50, t.find({m: 5}).skip(10).limit(20).count(), "J"); assert.eq(20, t.find({m: 5}).skip(10).limit(20).countReturn(), "K"); assert.eq(5, t.find({m: 5}).skip(45).limit(20).countReturn(), "L"); // Negative skip values should return error var negSkipResult = db.runCommand({count: 't', skip: -2}); assert(!negSkipResult.ok, "negative skip value shouldn't work, n = " + negSkipResult.n); assert(negSkipResult.errmsg.length > 0, "no error msg for negative skip");