mongodb-atlas

Provides comprehensive MongoDB and MongoDB Atlas capabilities for the Alpha Members Platform.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "mongodb-atlas" with this command: npx skills add lobbi-docs/claude/lobbi-docs-claude-mongodb-atlas

MongoDB Atlas Skill

Provides comprehensive MongoDB and MongoDB Atlas capabilities for the Alpha Members Platform.

When to Use This Skill

Activate this skill when working with:

  • MongoDB query development

  • Schema design and modeling

  • Aggregation pipelines

  • Index optimization

  • Prisma MongoDB integration

  • Atlas cluster management

  • Database performance tuning

Quick Reference

Docker Commands

Start local MongoDB

docker-compose up mongodb -d

Connect to MongoDB shell

docker exec -it mongodb mongosh -u root -p rootpassword

Check MongoDB logs

docker logs mongodb -f --tail=100

MongoDB Shell Commands

// Switch to database use member_db

// List collections show collections

// Find documents db.members.find({ status: "ACTIVE" }).limit(10)

// Insert document db.members.insertOne({ email: "test@example.com", status: "PENDING" })

// Update document db.members.updateOne( { email: "test@example.com" }, { $set: { status: "ACTIVE" } } )

// Aggregation db.members.aggregate([ { $match: { status: "ACTIVE" } }, { $group: { _id: "$profile.company", count: { $sum: 1 } } } ])

Connection Strings

Local Docker

mongodb://root:rootpassword@localhost:27017/member_db?authSource=admin

Atlas (example)

mongodb+srv://user:password@cluster.mongodb.net/member_db?retryWrites=true&w=majority

Schema Design

Prisma MongoDB Schema

datasource db { provider = "mongodb" url = env("DATABASE_URL") }

model Member { id String @id @default(auto()) @map("_id") @db.ObjectId keycloakUserId String @unique email String @unique firstName String lastName String status MemberStatus @default(PENDING) profile MemberProfile? // Embedded addresses MemberAddress[] // Embedded array memberships Membership[] // Relation createdAt DateTime @default(now()) updatedAt DateTime @updatedAt

@@index([status]) @@index([email]) }

type MemberProfile { jobTitle String? company String? timezone String @default("UTC") }

type MemberAddress { type AddressType street1 String city String state String postalCode String }

Collections

members

{ _id: ObjectId("..."), keycloakUserId: "uuid", email: "user@example.com", firstName: "John", lastName: "Doe", status: "ACTIVE", profile: { jobTitle: "Engineer", company: "Acme Corp" }, addresses: [ { type: "HOME", street1: "123 Main St", ... } ], createdAt: ISODate("..."), updatedAt: ISODate("...") }

memberships

{ _id: ObjectId("..."), memberId: ObjectId("..."), type: "INDIVIDUAL", level: "PREMIUM", status: "ACTIVE", startDate: ISODate("..."), payment: { method: "card", amount: 99.99, currency: "USD" } }

member_activities

{ _id: ObjectId("..."), memberId: ObjectId("..."), action: "LOGIN", category: "AUTH", ipAddress: "192.168.1.1", createdAt: ISODate("...") }

Indexing

Recommended Indexes

// Members collection db.members.createIndex({ keycloakUserId: 1 }, { unique: true }) db.members.createIndex({ email: 1 }, { unique: true }) db.members.createIndex({ status: 1, createdAt: -1 }) db.members.createIndex({ "profile.company": 1 })

// Text search db.members.createIndex({ firstName: "text", lastName: "text", email: "text", "profile.company": "text" })

// Memberships db.memberships.createIndex({ memberId: 1 }) db.memberships.createIndex({ status: 1, endDate: 1 })

// Activities (with TTL) db.member_activities.createIndex({ memberId: 1, createdAt: -1 }) db.member_activities.createIndex( { createdAt: 1 }, { expireAfterSeconds: 31536000 } // 1 year TTL )

Aggregation Pipelines

Member Statistics

db.members.aggregate([ { $facet: { byStatus: [ { $group: { _id: "$status", count: { $sum: 1 } } } ], byMonth: [ { $group: { _id: { $dateToString: { format: "%Y-%m", date: "$createdAt" } }, count: { $sum: 1 } } }, { $sort: { _id: 1 } } ], total: [{ $count: "count" }] } } ])

Member with Memberships

db.members.aggregate([ { $match: { _id: ObjectId("...") } }, { $lookup: { from: "memberships", localField: "_id", foreignField: "memberId", as: "memberships" } } ])

Prisma Operations

// Find member const member = await prisma.member.findUnique({ where: { email: "user@example.com" }, include: { memberships: true } });

// Create member with embedded profile const newMember = await prisma.member.create({ data: { email: "new@example.com", firstName: "Jane", lastName: "Doe", keycloakUserId: "uuid", profile: { jobTitle: "Manager", company: "Acme" } } });

// Update with push to array const updated = await prisma.member.update({ where: { id: "..." }, data: { addresses: { push: { type: "WORK", street1: "456 Office Blvd", city: "Boston", state: "MA", postalCode: "02102" } } } });

// Aggregation with Prisma const stats = await prisma.member.groupBy({ by: ['status'], _count: true });

Performance Optimization

Query Optimization

// Use projection to limit returned fields db.members.find( { status: "ACTIVE" }, { firstName: 1, lastName: 1, email: 1 } )

// Use covered queries db.members.find( { email: "user@example.com" }, { _id: 0, email: 1, status: 1 } ).hint({ email: 1, status: 1 })

// Explain query plan db.members.find({ status: "ACTIVE" }).explain("executionStats")

Index Analysis

// Get index usage stats db.members.aggregate([{ $indexStats: {} }])

// Find unused indexes db.members.aggregate([ { $indexStats: {} }, { $match: { "accesses.ops": 0 } } ])

Atlas CLI Commands

Login to Atlas

atlas auth login

List clusters

atlas clusters list --projectId <projectId>

Create cluster

atlas clusters create alpha-dev
--projectId <projectId>
--provider AWS
--region US_EAST_1
--tier M10

Get connection string

atlas clusters connectionStrings describe alpha-dev

Project Files

  • Prisma Schema: prisma/schema.prisma

  • MongoDB Init: infrastructure/mongo-init/01-init-db.js

  • Docker: docker/docker-compose.yml (mongodb service)

Related Agents

  • mongodb-atlas-admin - Cluster management

  • mongodb-schema-designer - Schema design

  • mongodb-query-optimizer - Performance tuning

  • mongodb-aggregation-specialist - Complex queries

Troubleshooting

Check MongoDB connection

docker exec mongodb mongosh --eval "db.adminCommand('ping')"

Check replication status

docker exec mongodb mongosh --eval "rs.status()"

Analyze slow queries

db.setProfilingLevel(1, { slowms: 100 }) db.system.profile.find().sort({ millis: -1 }).limit(10)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

vision-multimodal

No summary provided by upstream source.

Repository SourceNeeds Review
General

design-system

No summary provided by upstream source.

Repository SourceNeeds Review
General

kanban

No summary provided by upstream source.

Repository SourceNeeds Review
General

complex-reasoning

No summary provided by upstream source.

Repository SourceNeeds Review