|
This problem is very easy to reproduce locally on a collection with 200 documents and a sample size of 1.
let bulk = db.test.initializeUnorderedBulkOp();
|
for (let i = 0; i < 200; i++) {
|
bulk.insert({_id: i});
|
}
|
bulk.execute();
|
db.test.aggregate({$sample: {size: 1}}).itcount();
|
This aggregation takes 900ms locally and reads 600k worth of data to return 1 document:
{
|
"type": "command",
|
"ns": "test.test",
|
"appName": "MongoDB Shell",
|
"command": {
|
"aggregate": "test",
|
"pipeline": [
|
{
|
"$sample": {
|
"size": 1.0
|
}
|
}
|
],
|
"cursor": {},
|
"lsid": {
|
"id": {
|
"$uuid": "89f59c83-8666-4fba-a526-f93f94ba2cbf"
|
}
|
},
|
"$clusterTime": {
|
"clusterTime": {
|
"$timestamp": {
|
"t": 1602003783,
|
"i": 201
|
}
|
},
|
"signature": {
|
"hash": {
|
"$binary": {
|
"base64": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"subType": "0"
|
}
|
},
|
"keyId": 0
|
}
|
},
|
"$db": "test"
|
},
|
"planSummary": "MULTI_ITERATOR",
|
"keysExamined": 0,
|
"docsExamined": 0,
|
"cursorExhausted": true,
|
"numYields": 41,
|
"nreturned": 1,
|
"reslen": 244,
|
"locks": {
|
"ReplicationStateTransition": {
|
"acquireCount": {
|
"w": 43
|
}
|
},
|
"Global": {
|
"acquireCount": {
|
"r": 43
|
}
|
},
|
"Database": {
|
"acquireCount": {
|
"r": 43
|
}
|
},
|
"Collection": {
|
"acquireCount": {
|
"r": 43
|
}
|
},
|
"Mutex": {
|
"acquireCount": {
|
"r": 2
|
}
|
}
|
},
|
"storage": {},
|
"operationMetrics": {
|
"docBytesRead": 662274
|
},
|
"protocol": "op_msg",
|
"durationMillis": 900
|
}
|
|