summaryrefslogtreecommitdiff
path: root/jstests/core/find1.js
blob: a09c0822a47f58253204ea6281026b52f3fad6a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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);
}