Claude-skill-registry 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)
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/db-explorer" ~/.claude/skills/majiayu000-claude-skill-registry-db-explorer && rm -rf "$T"
manifest:
skills/data/db-explorer/SKILL.mdsource content
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
is set in yourMONGODB_URI
file.env.local - 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