summaryrefslogtreecommitdiff
path: root/jstests/core/query/regex/regex3.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/query/regex/regex3.js')
-rw-r--r--jstests/core/query/regex/regex3.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/jstests/core/query/regex/regex3.js b/jstests/core/query/regex/regex3.js
new file mode 100644
index 00000000000..b21a7a81435
--- /dev/null
+++ b/jstests/core/query/regex/regex3.js
@@ -0,0 +1,43 @@
+// @tags: [
+// assumes_balancer_off,
+// assumes_read_concern_local,
+// ]
+
+t = db.regex3;
+t.drop();
+
+assert.commandWorked(t.save({name: "eliot"}));
+assert.commandWorked(t.save({name: "emily"}));
+assert.commandWorked(t.save({name: "bob"}));
+assert.commandWorked(t.save({name: "aaron"}));
+
+assert.eq(2, t.find({name: /^e.*/}).itcount(), "no index count");
+assert.eq(
+ 4, t.find({name: /^e.*/}).explain(true).executionStats.totalDocsExamined, "no index explain");
+assert.commandWorked(t.createIndex({name: 1}));
+assert.eq(2, t.find({name: /^e.*/}).itcount(), "index count");
+assert.eq(2,
+ t.find({name: /^e.*/}).explain(true).executionStats.totalKeysExamined,
+ "index explain"); // SERVER-239
+
+t.drop();
+
+assert.commandWorked(t.save({name: "aa"}));
+assert.commandWorked(t.save({name: "ab"}));
+assert.commandWorked(t.save({name: "ac"}));
+assert.commandWorked(t.save({name: "c"}));
+
+assert.eq(3, t.find({name: /^aa*/}).itcount(), "B ni");
+assert.commandWorked(t.createIndex({name: 1}));
+assert.eq(3, t.find({name: /^aa*/}).itcount(), "B i 1");
+assert.eq(4, t.find({name: /^aa*/}).explain(true).executionStats.totalKeysExamined, "B i 1 e");
+
+assert.eq(2, t.find({name: /^a[ab]/}).itcount(), "B i 2");
+assert.eq(2, t.find({name: /^a[bc]/}).itcount(), "B i 3");
+
+t.drop();
+
+assert.commandWorked(t.save({name: ""}));
+assert.eq(1, t.find({name: /^a?/}).itcount(), "C 1");
+assert.commandWorked(t.createIndex({name: 1}));
+assert.eq(1, t.find({name: /^a?/}).itcount(), "C 2");