mirror of https://github.com/mongodb/mongo
37 lines
1012 B
JavaScript
37 lines
1012 B
JavaScript
// Tests that $group aggregation works with group key of type ObjectId.
|
|
// @tags: [
|
|
// # Some in memory variants will error because this test uses too much memory. As such, we do not
|
|
// # run this test on in-memory variants.
|
|
// requires_persistence,
|
|
// ]
|
|
const collName = jsTestName();
|
|
const coll = db[collName];
|
|
coll.drop();
|
|
|
|
const bigStr = Array(100 * 1000).toString(); // ~ 100KB of ','
|
|
const bigStr2 = bigStr + "2";
|
|
const nDocs = 1000;
|
|
const nGroups = 10;
|
|
|
|
let objectIds = [];
|
|
for (let i = 0; i < nGroups; i++) {
|
|
objectIds.push(new ObjectId());
|
|
}
|
|
|
|
const bulk = coll.initializeUnorderedBulkOp();
|
|
for (let i = 1; i <= nDocs; i++) {
|
|
bulk.insert({b: objectIds[i % nGroups], bigStr: bigStr, b2: bigStr2, c: i});
|
|
}
|
|
assert.commandWorked(bulk.execute());
|
|
|
|
const pipeline = [
|
|
{
|
|
$sort: {
|
|
"c": NumberInt(-1),
|
|
},
|
|
},
|
|
{$group: {"_id": "$b", "doc": {"$first": "$$ROOT"}}},
|
|
];
|
|
|
|
assert.commandWorked(db.runCommand({aggregate: collName, pipeline: pipeline, cursor: {}}));
|