t = db.find1; t.drop(); lookAtDocumentMetrics = false; // QUERY MIGRATION // New system is still not connected to server status if (db.serverStatus().metrics) { // var ss = db.serverStatus(); // lookAtDocumentMetrics = ss.metrics.document != null && ss.metrics.queryExecutor.scanned != // null; } print("lookAtDocumentMetrics: " + lookAtDocumentMetrics); if (lookAtDocumentMetrics) { // ignore mongos nscannedStart = db.serverStatus().metrics.queryExecutor.scanned; } t.save({a: 1, b: "hi"}); t.save({a: 2, b: "hi"}); // Basic test of .snapshot(). assert(t.find().snapshot()[0].a == 1, ".snapshot() simple test 1"); var q = t.findOne(); q.c = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"; t.save(q); // will move a:1 object to after a:2 in the file assert(t.find().snapshot()[0].a == 1, ".snapshot() simple test 2"); assert(t.findOne({a: 1}).b != null, "A"); assert(t.findOne({a: 1}, {a: 1}).b == null, "B"); assert(t.find({a: 1})[0].b != null, "C"); assert(t.find({a: 1}, {a: 1})[0].b == null, "D"); assert(t.find({a: 1}, {a: 1}).sort({a: 1})[0].b == null, "D"); id = t.findOne()._id; assert(t.findOne(id), "E"); assert(t.findOne(id).a, "F"); assert(t.findOne(id).b, "G"); assert(t.findOne(id, {a: 1}).a, "H"); assert(!t.findOne(id, {a: 1}).b, "I"); assert(t.validate().valid, "not valid"); if (lookAtDocumentMetrics) { // ignore mongos nscannedEnd = db.serverStatus().metrics.queryExecutor.scanned; assert.lte(nscannedStart + 16, nscannedEnd); }