This guide covers essential MongoDB Compass concepts commonly asked in technical interviews. Each question includes detailed answers and practical examples.
MongoDB Compass is the official GUI for MongoDB that provides a visual interface for database operations. Key features include:
Query building and optimization in Compass:
// Basic query
{
"age": { "$gt": 25 },
"status": "active"
}
// Advanced query with operators
{
"$and": [
{ "age": { "$gt": 25 } },
{ "status": "active" },
{ "tags": { "$in": ["premium", "verified"] } }
]
}
// Aggregation pipeline
[
{
"$match": {
"status": "active"
}
},
{
"$group": {
"_id": "$category",
"count": { "$sum": 1 },
"avgAge": { "$avg": "$age" }
}
},
{
"$sort": {
"count": -1
}
}
]
// Index creation
{
"name": "idx_status_age",
"key": {
"status": 1,
"age": 1
},
"background": true
}
// Explain plan analysis
db.users.find({
"status": "active",
"age": { "$gt": 25 }
}).explain("executionStats")
// Performance monitoring
db.currentOp()
db.serverStatus()
Schema analysis and validation in Compass:
// Schema validation rules
{
"$jsonSchema": {
"bsonType": "object",
"required": ["name", "email", "age"],
"properties": {
"name": {
"bsonType": "string",
"minLength": 2
},
"email": {
"bsonType": "string",
"pattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"
},
"age": {
"bsonType": "int",
"minimum": 18,
"maximum": 120
}
}
}
}
// Collection validation
db.createCollection("users", {
validator: {
$jsonSchema: {
// schema definition
}
},
validationLevel: "moderate",
validationAction: "warn"
})
// Field distribution analysis
db.users.aggregate([
{
"$group": {
"_id": "$status",
"count": { "$sum": 1 },
"avgAge": { "$avg": "$age" }
}
}
])
// Data type analysis
db.users.aggregate([
{
"$project": {
"fieldTypes": {
"$objectToArray": "$$ROOT"
}
}
}
])
Performance monitoring in Compass:
// Server status
db.serverStatus()
// Current operations
db.currentOp()
// Database stats
db.stats()
// Collection stats
db.users.stats()
// Index usage
db.users.aggregate([
{ "$indexStats": {} }
])
// Query optimization
db.users.find({
"status": "active",
"age": { "$gt": 25 }
}).explain("executionStats")
// Index optimization
db.users.createIndex(
{ "status": 1, "age": 1 },
{ "background": true }
)
// Performance profiling
db.setProfilingLevel(1, { slowms: 100 })
Follow these Compass best practices:
// Use query filters
{
"status": "active",
"createdAt": {
"$gte": ISODate("2024-01-01")
}
}
// Use projections
{
"name": 1,
"email": 1,
"_id": 0
}
// Use proper indexes
db.users.createIndex(
{ "status": 1, "createdAt": -1 },
{ "background": true }
)
// Regular maintenance
db.repairDatabase()
// Data validation
db.users.validate()
// Index maintenance
db.users.reIndex()
// Performance monitoring
db.currentOp()
db.serverStatus()
Continue your MongoDB interview preparation with: