summaryrefslogtreecommitdiff
path: root/jstests/aggregation/sources/bucketauto/collation_bucketauto.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/aggregation/sources/bucketauto/collation_bucketauto.js')
-rw-r--r--jstests/aggregation/sources/bucketauto/collation_bucketauto.js103
1 files changed, 52 insertions, 51 deletions
diff --git a/jstests/aggregation/sources/bucketauto/collation_bucketauto.js b/jstests/aggregation/sources/bucketauto/collation_bucketauto.js
index 4aafa6ea511..26b48951ab7 100644
--- a/jstests/aggregation/sources/bucketauto/collation_bucketauto.js
+++ b/jstests/aggregation/sources/bucketauto/collation_bucketauto.js
@@ -3,55 +3,56 @@
// Test that the $bucketAuto stage defines and sorts buckets according to the collation.
(function() {
- "use strict";
-
- var results;
- const numericOrdering = {collation: {locale: "en_US", numericOrdering: true}};
-
- var coll = db.collation_bucket;
- coll.drop();
-
- function insertData() {
- assert.writeOK(coll.insert({num: "1"}));
- assert.writeOK(coll.insert({num: "2"}));
- assert.writeOK(coll.insert({num: "5"}));
- assert.writeOK(coll.insert({num: "10"}));
- assert.writeOK(coll.insert({num: "20"}));
- assert.writeOK(coll.insert({num: "50"}));
- assert.writeOK(coll.insert({num: "100"}));
- assert.writeOK(coll.insert({num: "200"}));
- assert.writeOK(coll.insert({num: "500"}));
- }
-
- insertData();
-
- // Test that $bucketAuto respects an explicit collation.
- results =
- coll.aggregate([{$bucketAuto: {groupBy: "$num", buckets: 3}}], numericOrdering).toArray();
- assert.eq(3, results.length);
- assert.eq({_id: {min: "1", max: "10"}, count: 3}, results[0]);
- assert.eq({_id: {min: "10", max: "100"}, count: 3}, results[1]);
- assert.eq({_id: {min: "100", max: "500"}, count: 3}, results[2]);
-
- coll.drop();
- assert.commandWorked(db.createCollection(coll.getName(), numericOrdering));
- insertData();
-
- // Test that $bucketAuto respects the inherited collation.
- results = coll.aggregate([{$bucketAuto: {groupBy: "$num", buckets: 3}}]).toArray();
- assert.eq(3, results.length);
- assert.eq({_id: {min: "1", max: "10"}, count: 3}, results[0]);
- assert.eq({_id: {min: "10", max: "100"}, count: 3}, results[1]);
- assert.eq({_id: {min: "100", max: "500"}, count: 3}, results[2]);
-
- // Test that the collection default can be overridden with the simple collation. In this case,
- // the numbers will be sorted in lexicographical order, so the 3 buckets will be:
- // ["1", "10","100"], ["2", "20", "200"], and ["5", "50", "500"]
- results = coll.aggregate([{$bucketAuto: {groupBy: "$num", buckets: 3}}],
- {collation: {locale: "simple"}})
- .toArray();
- assert.eq(3, results.length);
- assert.eq({_id: {min: "1", max: "2"}, count: 3}, results[0]);
- assert.eq({_id: {min: "2", max: "5"}, count: 3}, results[1]);
- assert.eq({_id: {min: "5", max: "500"}, count: 3}, results[2]);
+"use strict";
+
+var results;
+const numericOrdering = {
+ collation: {locale: "en_US", numericOrdering: true}
+};
+
+var coll = db.collation_bucket;
+coll.drop();
+
+function insertData() {
+ assert.writeOK(coll.insert({num: "1"}));
+ assert.writeOK(coll.insert({num: "2"}));
+ assert.writeOK(coll.insert({num: "5"}));
+ assert.writeOK(coll.insert({num: "10"}));
+ assert.writeOK(coll.insert({num: "20"}));
+ assert.writeOK(coll.insert({num: "50"}));
+ assert.writeOK(coll.insert({num: "100"}));
+ assert.writeOK(coll.insert({num: "200"}));
+ assert.writeOK(coll.insert({num: "500"}));
+}
+
+insertData();
+
+// Test that $bucketAuto respects an explicit collation.
+results = coll.aggregate([{$bucketAuto: {groupBy: "$num", buckets: 3}}], numericOrdering).toArray();
+assert.eq(3, results.length);
+assert.eq({_id: {min: "1", max: "10"}, count: 3}, results[0]);
+assert.eq({_id: {min: "10", max: "100"}, count: 3}, results[1]);
+assert.eq({_id: {min: "100", max: "500"}, count: 3}, results[2]);
+
+coll.drop();
+assert.commandWorked(db.createCollection(coll.getName(), numericOrdering));
+insertData();
+
+// Test that $bucketAuto respects the inherited collation.
+results = coll.aggregate([{$bucketAuto: {groupBy: "$num", buckets: 3}}]).toArray();
+assert.eq(3, results.length);
+assert.eq({_id: {min: "1", max: "10"}, count: 3}, results[0]);
+assert.eq({_id: {min: "10", max: "100"}, count: 3}, results[1]);
+assert.eq({_id: {min: "100", max: "500"}, count: 3}, results[2]);
+
+// Test that the collection default can be overridden with the simple collation. In this case,
+// the numbers will be sorted in lexicographical order, so the 3 buckets will be:
+// ["1", "10","100"], ["2", "20", "200"], and ["5", "50", "500"]
+results =
+ coll.aggregate([{$bucketAuto: {groupBy: "$num", buckets: 3}}], {collation: {locale: "simple"}})
+ .toArray();
+assert.eq(3, results.length);
+assert.eq({_id: {min: "1", max: "2"}, count: 3}, results[0]);
+assert.eq({_id: {min: "2", max: "5"}, count: 3}, results[1]);
+assert.eq({_id: {min: "5", max: "500"}, count: 3}, results[2]);
})();