37
loading...
This website collects cookies to deliver better user experience
docker run --name mongo5 -p 27017:27017 -d mongo:5.0.2
docker exec -it mongo5 mongo
use test
db.createCollection("users")
{
"_id" : ObjectId("6148fddb88c2dc877518437e"),
"user_id" : 158021798,
"phone" : 627210141,
"favourite_sports" : [ "ping-pong", "padel" ],
"stats" : {
"matches_won" : 907,
"matches_lost" : 566
}
}
function random(min, max) {
return Math.floor(Math.random() * (max - min) + min);
}
const sports = ["padel", "tenis", "ping-pong", "badminton"];
const nDocs = 1000000;
documents = [];
for (let i = 0; i < nDocs; i++) {
const shuffled = sports.sort(() => 0.5 - Math.random());
const random_sports = shuffled.slice(0,
random(1, sports.length));
documents.push({
"user_id": random(100000000, 199999999),
"phone": random(600000000, 699999999),
"favourite_sports": random_sports,
"stats": {
"matches_won": random(0, 1000),
"matches_lost": random(0, 1000)
}
});
}
db.users.insert(documents)
db.users.find().limit(1)
and use the values from that particular document.db.users.find({"_id": ObjectId("6148fddb88c2dc877518437e")})
{
"_id" : ObjectId("6148fddb88c2dc877518437e"),
"user_id" : 158021798,
"phone" : 627210141,
"favourite_sports" : [ "ping-pong", "padel" ],
"stats" : {
"matches_won" : 907,
"matches_lost" : 566
}
}
db.users.find({"_id": ObjectId("6148fddb88c2dc877518437e")})
.explain("executionStats")
{
...
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 1,
"executionTimeMillis" : 0,
"totalKeysExamined" : 1,
"totalDocsExamined" : 1,
"executionStages" : {
"stage" : "IDHACK",
"nReturned" : 1,
"executionTimeMillisEstimate" : 0,
"works" : 2,
"advanced" : 1,
"needTime" : 0,
"needYield" : 0,
"saveState" : 0,
"restoreState" : 0,
"isEOF" : 1,
"keysExamined" : 1,
"docsExamined" : 1
}
},
...
}
db.users.find({"user_id": 158021798}).explain("executionStats")
{
...
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 1,
"executionTimeMillis" : 523,
"totalKeysExamined" : 0,
"totalDocsExamined" : 1000000,
"executionStages" : {
"stage" : "COLLSCAN",
"filter" : {
"user_id" : {
"$eq" : 158021798
}
},
"nReturned" : 1,
"executionTimeMillisEstimate" : 11,
"works" : 1000002,
"advanced" : 1,
"needTime" : 1000000,
"needYield" : 0,
"saveState" : 1000,
"restoreState" : 1000,
"isEOF" : 1,
"direction" : "forward",
"docsExamined" : 1000000
}
},
...
}
db.users.createIndex({"user_id": 1})
db.users.find({"user_id": 158021798}).explain("executionStats")
{
...
"executionStats" : {
"executionSuccess" : true,
"nReturned" : 1,
"executionTimeMillis" : 2,
"totalKeysExamined" : 1,
"totalDocsExamined" : 1,
"executionStages" : {
"stage" : "FETCH",
"nReturned" : 1,
...
"inputStage" : {
"stage" : "IXSCAN",
"nReturned" : 1,
...
"indexName" : "user_id_1",
...
}
db.users.find({
"favourite_sports":"ping-pong",
"stats.matches_won": {$gt: 900}
})
db.users.createIndex({
"favourite_sports": 1,
"stats.matches_won": 1
})