返回 Skill 列表
extension
分类: 开发与工程无需 API Key

mongodb-queries

ICJC MongoDB 数据库访问及查询。使用场景:(1) 与mongodb、mongo、DB、数据库、查询相关的请求;(2) collection、document的查询/更新/删除;(3) 需要为数据确认或调试而查询数据库时。支持IN7DB(主应用)、AgentDB(代理)数据库。

person作者: jakexiaohubgithub

MongoDB Queries Skill

ICJC 프로젝트의 MongoDB 데이터베이스 접근 및 쿼리를 위한 스킬입니다.

<trigger_conditions>

사용 시점

다음 키워드나 상황에서 이 스킬을 사용하세요:

  • "mongodb", "mongo", "DB", "데이터베이스", "쿼리"
  • "collection", "document", "조회", "업데이트", "삭제"
  • 데이터 확인, 디버깅을 위한 DB 조회가 필요할 때 </trigger_conditions>

<database_schema>

데이터베이스 구조

IN7DB (메인 애플리케이션) - 주요 컬렉션

| Collection | 설명 | |------------|------| | users | 사용자 (email, name, is_active) | | orgs | 조직 | | teams | 팀 | | team_members | 팀 멤버십 | | subscriptions | 구독 | | subscription_plans | 구독 플랜 | | subscription_plan_templates | 구독 플랜 템플릿 | | billing_events | 결제 이벤트 | | payments | 결제 | | invoices | 청구서 | | org_promotions | 조직 프로모션 | | promotion_templates | 프로모션 템플릿 | | documents | AI Drive 문서 | | document_chunks | 문서 청크 (벡터) | | prompts | 프롬프트 | | prompt_sessions | 프롬프트 세션 | | prompt_favorites | 즐겨찾기 | | invitations | 초대 | | feedbacks | 피드백 | | feature_flags | 기능 플래그 | | system_settings | 시스템 설정 |

AgentDB (Agent 서비스)

| Collection | 설명 | |------------|------| | sessions | 채팅 세션 | | app_states | 앱 상태 | | user_states | 사용자 상태 | | projects | 프로젝트 | | events | 이벤트 로그 | </database_schema>

<connection> ## 접속 방법

컨테이너에서 직접 접속

# MongoDB 셸 접속
docker exec -it mongodb-primary-dev mongosh

# 특정 DB 접속
docker exec -it mongodb-primary-dev mongosh IN7DB
docker exec -it mongodb-primary-dev mongosh AgentDB

원라인 쿼리 실행

# 기본 형식
docker exec mongodb-primary-dev mongosh <DB명> --eval "<쿼리>" --quiet

# 예시
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.findOne()" --quiet
</connection>

<query_patterns>

쿼리 패턴

조회 (Read)

# 단일 문서 조회
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.findOne({email: 'test@example.com'})" --quiet

# 여러 문서 조회
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.find({is_active: true}).limit(10).toArray()" --quiet

# 특정 필드만 조회
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.findOne({email: 'test@example.com'}, {email: 1, name: 1})" --quiet

# 개수 조회
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.countDocuments({is_active: true})" --quiet

# Collection 목록
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.getCollectionNames()" --quiet

수정 (Update)

# 단일 문서 수정
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.updateOne({email: 'test@example.com'}, {\$set: {name: 'New Name'}})" --quiet

# 여러 문서 수정
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.updateMany({is_active: false}, {\$set: {is_active: true}})" --quiet

삭제 (Delete)

# 단일 문서 삭제
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.deleteOne({email: 'test@example.com'})" --quiet

# 여러 문서 삭제
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.deleteMany({is_active: false})" --quiet

ObjectId 사용

# ObjectId로 조회
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.findOne({_id: ObjectId('507f1f77bcf86cd799439011')})" --quiet

날짜 쿼리

# 특정 날짜 이후
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.billing_events.find({created_at: {\$gte: new Date('2024-01-01')}}).toArray()" --quiet

Aggregation

# 그룹별 집계
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.billing_events.aggregate([{\$group: {_id: '\$org_id', total: {\$sum: '\$amount'}}}]).toArray()" --quiet

</query_patterns>

<common_queries>

자주 사용하는 쿼리

사용자 관련

# 이메일로 사용자 찾기
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.findOne({email: 'EMAIL'})" --quiet

# 활성 사용자 수
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.users.countDocuments({is_active: true})" --quiet

조직/팀 관련

# 조직 정보 조회
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.orgs.findOne({_id: ObjectId('ORG_ID')})" --quiet

# 조직의 팀 목록
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.teams.find({org_id: ObjectId('ORG_ID')}).toArray()" --quiet

구독/결제 관련

# 조직 구독 상태
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.subscriptions.findOne({org_id: ObjectId('ORG_ID')})" --quiet

# 최근 결제 이벤트
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.billing_events.find({org_id: ObjectId('ORG_ID')}).sort({created_at: -1}).limit(5).toArray()" --quiet

프로모션 관련

# 조직의 프로모션
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.org_promotions.find({org_id: ObjectId('ORG_ID')}).toArray()" --quiet

# 프로모션 템플릿
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.promotion_templates.find().toArray()" --quiet

Agent 세션

# 사용자의 세션 목록
docker exec mongodb-primary-dev mongosh AgentDB --eval "db.sessions.find({user_id: 'USER_ID'}).sort({created_at: -1}).limit(5).toArray()" --quiet

</common_queries>

<debugging_queries>

디버깅용 쿼리

데이터 존재 확인

# 특정 필드 존재 여부
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.collection.findOne({field: {\$exists: true}})" --quiet

# null 값 확인
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.collection.find({field: null}).toArray()" --quiet

스키마 분석

# 샘플 문서 구조 확인
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.collection.findOne()" --quiet

# 인덱스 확인
docker exec mongodb-primary-dev mongosh IN7DB --eval "db.collection.getIndexes()" --quiet

</debugging_queries>

<instructions> ## 이 스킬 사용 시 지침
  1. 읽기 작업 우선: 데이터 수정 전에 반드시 현재 상태를 먼저 조회하세요.
  2. --quiet 플래그 사용: 출력을 깔끔하게 하려면 --quiet 플래그를 사용하세요.
  3. $ 이스케이프: bash에서 $\$로 이스케이프해야 합니다.
  4. ObjectId 사용: _id 필드는 ObjectId('...')로 감싸야 합니다.
  5. 수정/삭제 주의: 프로덕션 데이터 수정 전에 반드시 사용자 확인을 받으세요.
  6. 백업 권장: 중요한 데이터 수정 전에 make mongo-backup-dev로 백업하세요.
</instructions>