diff options
author | Benety Goh <benety@mongodb.com> | 2022-06-14 16:21:01 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-06-14 17:24:02 +0000 |
commit | 732ed1824f45c40f466888b55a2915ad1ad532dc (patch) | |
tree | 23810de5736d641f499724b4e2593a170df01576 /jstests | |
parent | 58d713bdf8c5b8137208d99a04bde9c0e388976b (diff) | |
download | mongo-732ed1824f45c40f466888b55a2915ad1ad532dc.tar.gz |
SERVER-67255 clean up index2.js
Diffstat (limited to 'jstests')
-rw-r--r-- | jstests/core/index2.js | 93 |
1 files changed, 46 insertions, 47 deletions
diff --git a/jstests/core/index2.js b/jstests/core/index2.js index 2c37c48c871..5cfbb2f1590 100644 --- a/jstests/core/index2.js +++ b/jstests/core/index2.js @@ -1,52 +1,51 @@ -/**test indexing where the key is an embedded object. +/** + * Test indexing where the key is an embedded object. */ -t = db.embeddedIndexTest2; +(function() { +'use strict'; +let t = db.index2_without_index; t.drop(); -assert(t.findOne() == null); -o = { - name: "foo", - z: {a: 17} -}; -p = { - name: "foo", - z: {a: 17} -}; -q = { - name: "barrr", - z: {a: 18} -}; -r = { - name: "barrr", - z: {k: "zzz", L: [1, 2]} -}; - -t.save(o); - -assert(t.findOne().z.a == 17); - -t.save(p); -t.save(q); - -assert(t.findOne({z: {a: 17}}).z.a == 17); -assert(t.find({z: {a: 17}}).length() == 2); -assert(t.find({z: {a: 18}}).length() == 1); - -t.save(r); - -assert(t.findOne({z: {a: 17}}).z.a == 17); -assert(t.find({z: {a: 17}}).length() == 2); -assert(t.find({z: {a: 18}}).length() == 1); - -t.createIndex({z: 1}); - -assert(t.findOne({z: {a: 17}}).z.a == 17); -assert(t.find({z: {a: 17}}).length() == 2); -assert(t.find({z: {a: 18}}).length() == 1); - -assert(t.find().sort({z: 1}).length() == 4); -assert(t.find().sort({z: -1}).length() == 4); - -assert(t.validate().valid); +assert.eq(t.findOne(), null); + +const docs = [ + {_id: 0, name: "foo", z: {a: 17}}, + {_id: 1, name: "foo", z: {a: 17}}, + {_id: 2, name: "barrr", z: {a: 18}}, + {_id: 3, name: "barrr", z: {k: "zzz", L: [1, 2]}}, +]; + +assert.commandWorked(t.insert(docs[0])); +assert.eq(t.findOne().z.a, 17); + +// We will reuse these predicates to check the effect of +// additional inserts and indexes on our query results. +assert.commandWorked(t.insert(docs.slice(1, 3))); +assert.eq(t.findOne({z: {a: 17}}).z.a, 17); +assert.eq(t.countDocuments({z: {a: 17}}), 2); +assert.eq(t.countDocuments({z: {a: 18}}), 1); + +// Inserting document with key that does not match any of our +// predicates. +assert.commandWorked(t.insert(docs.slice(3))); +assert.eq(t.findOne({z: {a: 17}}).z.a, 17); +assert.eq(t.countDocuments({z: {a: 17}}), 2); +assert.eq(t.countDocuments({z: {a: 18}}), 1); + +// Adding an index should not change results. +t = db.index2_with_index; +t.drop(); +assert.commandWorked(t.createIndex({z: 1})); +assert.commandWorked(t.insert(docs)); +assert.eq(t.findOne({z: {a: 17}}).z.a, 17); +assert.eq(t.countDocuments({z: {a: 17}}), 2); +assert.eq(t.countDocuments({z: {a: 18}}), 1); + +// Providing a sort preference should not change resutls. +const sortedDocsAscending = t.find().sort({z: 1}); +assert.eq(sortedDocsAscending.length(), 4, tojson(sortedDocsAscending.toArray())); +const sortedDocsDescending = t.find().sort({z: -1}); +assert.eq(sortedDocsDescending.length(), 4, tojson(sortedDocsDescending.toArray())); +})(); |