1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
/**
* Tests running the update command on a time-series collection closes any in-memory buckets that
* were updated.
*
* @tags: [
* assumes_no_implicit_collection_creation_after_drop,
* does_not_support_stepdowns,
* does_not_support_transactions,
* requires_getmore,
* requires_fcv_51,
* ]
*/
(function() {
"use strict";
load("jstests/core/timeseries/libs/timeseries.js");
if (!TimeseriesTest.timeseriesUpdatesAndDeletesEnabled(db.getMongo())) {
jsTestLog("Skipping test because the time-series updates and deletes feature flag is disabled");
return;
}
TimeseriesTest.run((insert) => {
const testDB = db.getSiblingDB(jsTestName());
assert.commandWorked(testDB.dropDatabase());
const coll = testDB["t"];
const bucketsColl = testDB["system.buckets." + coll.getName()];
const timeFieldName = "time";
const metaFieldName = "m";
const docs = [
{[timeFieldName]: ISODate("2021-01-01T01:00:00Z"), [metaFieldName]: "a"},
{[timeFieldName]: ISODate("2021-01-01T01:01:00Z"), [metaFieldName]: "a"},
{[timeFieldName]: ISODate("2021-01-01T01:02:00Z"), [metaFieldName]: "b"},
];
assert.commandWorked(testDB.createCollection(
coll.getName(), {timeseries: {timeField: timeFieldName, metaField: metaFieldName}}));
assert.commandWorked(insert(coll, docs[0]));
assert.commandWorked(testDB.runCommand({
update: coll.getName(),
updates: [{q: {[metaFieldName]: "a"}, u: {$set: {[metaFieldName]: "b"}}, multi: true}]
}));
docs[0][metaFieldName] = "b";
assert.commandWorked(insert(coll, docs.slice(1)));
assert.docEq(coll.find({}, {_id: 0}).sort({[timeFieldName]: 1}).toArray(), docs);
// All three documents should be in their own buckets.
assert.eq(bucketsColl.find().itcount(), 3, bucketsColl.find().toArray());
});
})();
|