Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
How to create a performance system that count tags across a large dynamic dataset in MongoDB?
To create a performance system that counts tags across a large dynamic dataset in MongoDB, use indexes on array fields combined with aggregation pipelines and the explain() method to monitor query performance.
Syntax
// Create index on array field
db.collection.createIndex({"arrayField": 1});
// Count tags with aggregation
db.collection.aggregate([
{ $unwind: "$arrayField" },
{ $group: { _id: "$arrayField", count: { $sum: 1 } } }
]);
// Monitor performance
db.collection.find(query).explain("executionStats");
Sample Data
Let us create a collection with documents containing subject tags −
db.demo278.createIndex({"Subjects": 1});
db.demo278.insertMany([
{"Subjects": ["MySQL", "MongoDB", "Java"]},
{"Subjects": ["C", "C++"]},
{"Subjects": ["Spring", "Hibernate"]}
]);
{
"createdCollectionAutomatically": true,
"numIndexesBefore": 1,
"numIndexesAfter": 2,
"ok": 1
}
Display Sample Data
db.demo278.find();
{ "_id": ObjectId("5e49096edd099650a5401a55"), "Subjects": ["MySQL", "MongoDB", "Java"] }
{ "_id": ObjectId("5e490978dd099650a5401a56"), "Subjects": ["C", "C++"] }
{ "_id": ObjectId("5e490984dd099650a5401a57"), "Subjects": ["Spring", "Hibernate"] }
Method 1: Count Specific Tags with Performance Analysis
Query documents containing specific tags and analyze performance −
db.demo278.find({Subjects: {$in: ["Spring", "MongoDB"]}}).explain("executionStats");
{
"queryPlanner": {
"plannerVersion": 1,
"namespace": "test.demo278",
"indexFilterSet": false,
"parsedQuery": {
"Subjects": {
"$in": ["MongoDB", "Spring"]
}
},
"winningPlan": {
"stage": "FETCH",
"inputStage": {
"stage": "IXSCAN",
"keyPattern": {"Subjects": 1},
"indexName": "Subjects_1",
"isMultiKey": true,
"indexBounds": {
"Subjects": [
"["MongoDB", "MongoDB"]",
"["Spring", "Spring"]"
]
}
}
}
},
"ok": 1
}
Method 2: Count All Tags Using Aggregation
Create a comprehensive tag counting system −
db.demo278.aggregate([
{ $unwind: "$Subjects" },
{ $group: { _id: "$Subjects", count: { $sum: 1 } } },
{ $sort: { count: -1 } }
]);
{ "_id": "C", "count": 1 }
{ "_id": "C++", "count": 1 }
{ "_id": "Hibernate", "count": 1 }
{ "_id": "Java", "count": 1 }
{ "_id": "MongoDB", "count": 1 }
{ "_id": "MySQL", "count": 1 }
{ "_id": "Spring", "count": 1 }
Key Performance Points
- The IXSCAN stage indicates the query uses the index efficiently
-
isMultiKey: trueconfirms the index supports array fields - Use
explain("executionStats")for detailed execution metrics - Aggregation pipelines with
$unwindare ideal for tag counting
Conclusion
Create indexes on array fields and use aggregation pipelines for efficient tag counting. Monitor performance with explain() to ensure queries use indexes and scale effectively across large datasets.
Advertisements
