const tsColl = db.tsColl;
assert(tsColl.drop());
assert.commandWorked(db.createCollection(tsColl.getName(), {
timeseries: {timeField: 't', metaField: 'm'},
}));
assert.commandWorked(tsColl.insert([
{t: new Date(0), m: 1, x: 0},
{t: new Date(10000), m: 2, x: 1},
]));
const inputQuery = [{"$project": {"_id": 0, "m": 1}}, {"$group": {"_id": "$x"}}];
const optimizedBucketQuery = [
{
"$_internalUnpackBucket": {
"include": ["m"],
"timeField": "t",
"metaField": "m",
"bucketMaxSpanSeconds": NumberInt(3600),
"assumeNoMixedSchemaData": true
}
},
{"$group": {"_id": "$x"}}
];
const viewResults = tsColl.aggregate(inputQuery).toArray();
const directResults = db.system.buckets[tsColl.getName()].aggregate(optimizedBucketQuery).toArray();
jsTestLog(viewResults);
jsTestLog(directResults);
assert(viewResults.length === 1, viewResults);
assert(directResults.length === 1, directResults);
assert.sameMembers(viewResults, directResults);