db-explorer
MongoDB database exploration and querying. Use when you need to understand database structure, view existing data, check collection schemas, count documents, or run queries to investigate the database state. (project)
When & Why to Use This Skill
The MongoDB Database Explorer is a specialized Claude skill designed for seamless database investigation and querying. It empowers developers and data analysts to visualize collection schemas, verify document structures, and execute complex queries to gain real-time insights into the database state, significantly reducing the time spent on manual data verification.
Use Cases
- Schema Validation: Quickly inspecting collection structures and indexes to ensure data consistency and understand relationships.
- Data Debugging: Investigating specific records or document states to troubleshoot application-level issues and identify data inconsistencies.
- State Verification: Confirming the success of backend operations by verifying the actual data stored in MongoDB collections after CRUD actions.
- Quick Analytics: Running aggregation pipelines or document counts to generate immediate statistics and reports on database content.
| name | db-explorer |
|---|---|
| description | MongoDB database exploration and querying. Use when you need to understand database structure, view existing data, check collection schemas, count documents, or run queries to investigate the database state. (project) |
MongoDB Database Explorer
Use this skill when you need to explore the MongoDB database to understand data structure, verify existing records, or investigate database state.
When to Use
- Understanding what data exists in collections
- Checking collection schemas and indexes
- Counting documents matching certain criteria
- Viewing sample documents
- Debugging data-related issues
- Verifying database state after operations
Quick Exploration Commands
Use mongosh or a MongoDB client to explore the database:
# Connect to MongoDB
mongosh mongodb://localhost:27017/freelancelyst
# Show all collections
show collections
# Count documents in a collection
db.users.countDocuments()
db.blogposts.countDocuments()
# View sample documents
db.users.find().limit(5).pretty()
db.blogposts.find().limit(5).pretty()
# Query with filters
db.blogposts.find({ status: "published" }).limit(10).pretty()
db.users.find({ roles: "admin" }).pretty()
# Aggregate examples
db.blogposts.aggregate([
{ $group: { _id: "$status", count: { $sum: 1 } } }
])
Database Schema Overview
The database has the following collections:
Users
Collection: users
{
_id: ObjectId,
name: string,
email: string,
password: string, // bcrypt hashed
roles: string[], // ['user'] or ['admin']
createdAt: Date,
updatedAt: Date
}
Blog Posts
Collection: blogposts
{
_id: ObjectId,
slug: string, // unique
status: 'draft' | 'published' | 'archived',
publishedAt: Date | null,
coverImage: string | null,
owner: ObjectId, // ref: users
category: ObjectId | null, // ref: blogcategories
tags: ObjectId[], // refs: blogtags
translations: [
{ langCode: 'en' | 'fa', title: string, content: string, excerpt: string }
],
createdAt: Date,
updatedAt: Date
}
Blog Categories
Collection: blogcategories
{
_id: ObjectId,
slug: string, // unique
translations: [
{ langCode: 'en' | 'fa', name: string }
],
createdAt: Date,
updatedAt: Date
}
Blog Tags
Collection: blogtags
{
_id: ObjectId,
slug: string, // unique
translations: [
{ langCode: 'en' | 'fa', name: string }
],
createdAt: Date,
updatedAt: Date
}
Project Applications
Collection: projectapplications
{
_id: ObjectId,
title: string,
description: string,
budgetEstimate: string,
deadline: string,
clientEmail: string | null,
utm: object | null, // UTM tracking params
createdAt: Date,
updatedAt: Date
}
Freelancer Applications
Collection: freelancerapplications
{
_id: ObjectId,
fullName: string,
email: string,
skillTags: string,
description: string,
utm: object | null, // UTM tracking params
createdAt: Date,
updatedAt: Date
}
Common Queries
Find posts with translations in specific language
db.blogposts.find({
"translations.langCode": "en"
}).pretty()
Get published posts with category populated
db.blogposts.aggregate([
{ $match: { status: "published" } },
{ $lookup: {
from: "blogcategories",
localField: "category",
foreignField: "_id",
as: "categoryData"
}},
{ $limit: 5 }
])
Count applications by month
db.projectapplications.aggregate([
{ $group: {
_id: { $month: "$createdAt" },
count: { $sum: 1 }
}}
])
Important Notes
- Environment: Ensure
MONGODB_URIis set in your.env.localfile - Read-Only: This skill is for exploration only. Never modify data through raw queries.
- Sensitive Data: Be careful with password hashes - don't log them in plain text
- Performance: Use limits on large collections to avoid slow queries
- Translations: Remember blog entities use embedded translation arrays