54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
// Cannot implicitly shard accessed collections because the "dataSize" command returns an
|
|
// "keyPattern must equal shard key" error response.
|
|
// @tags: [assumes_unsharded_collection, requires_fcv_53]
|
|
|
|
//
|
|
// Test argument validation for dataSize command
|
|
//
|
|
|
|
(function() {
|
|
let coll = db.datasize_validation;
|
|
coll.drop();
|
|
coll.insertOne({_id: 1});
|
|
coll.insertOne({_id: 2});
|
|
coll.insertOne({_id: 3});
|
|
coll.insertOne({_id: 4});
|
|
|
|
assert.commandFailed(db.runCommand({
|
|
'dataSize': coll.getFullName(),
|
|
min: NumberLong("1"),
|
|
max: NumberLong("2"),
|
|
estimate: false
|
|
}),
|
|
"min and max should be objects");
|
|
|
|
assert.commandFailed(
|
|
db.runCommand({'dataSize': coll.getFullName(), min: {_id: NumberLong("1")}, estimate: false}),
|
|
"min and max should both be present");
|
|
assert.commandFailed(
|
|
db.runCommand({'dataSize': coll.getFullName(), max: {_id: NumberLong("2")}, estimate: false}),
|
|
"min and max should both be present");
|
|
|
|
let resultWithKey = assert.commandWorked(db.runCommand({
|
|
'dataSize': coll.getFullName(),
|
|
keyPattern: {_id: 1},
|
|
min: {_id: NumberLong("1")},
|
|
max: {_id: NumberLong("2")},
|
|
estimate: false
|
|
}));
|
|
assert.eq(1, resultWithKey.numObjects, "only 1 object should be inspected between min/max bounds.");
|
|
|
|
let result = assert.commandWorked(db.runCommand({
|
|
'dataSize': coll.getFullName(),
|
|
min: {_id: NumberLong("1")},
|
|
max: {_id: NumberLong("2")},
|
|
estimate: false
|
|
}));
|
|
assert.eq(result.size,
|
|
resultWithKey.size,
|
|
"measured size should be equal after keyPattern properly inferred from min/max bounds.");
|
|
assert.eq(result.numObjects,
|
|
resultWithKey.numObjects,
|
|
"numObjects should be equal after keyPattern properly inferred from min/max bounds.");
|
|
})();
|