mongosh | 로컬 MongoDB 연결 |
mongosh "mongodb://host:27017" | 특정 호스트 연결 |
mongosh "mongodb+srv://user:pass@cluster.mongodb.net/db" | Atlas 연결 |
mongosh --username user --password pass | 인증으로 연결 |
show dbs | 데이터베이스 나열 |
use dbname | 데이터베이스 전환/생성 |
db | 현재 데이터베이스 표시 |
db.dropDatabase() | 현재 데이터베이스 삭제 |
show collections | 컬렉션 나열 |
db.createCollection("name") | 컬렉션 생성 |
db.collection.drop() | 컬렉션 삭제 |
db.stats() | 데이터베이스 통계 |
db.users.insertOne({ name: "John", age: 30 }) | 단일 문서 삽입 |
db.users.insertMany([
{ name: "John" },
{ name: "Jane" }
]) | 여러 문서 삽입 |
db.users.insertOne({ _id: "custom-id", name: "John" }) | 커스텀 _id로 삽입 |
db.users.find() | 모든 문서 조회 |
db.users.find({ age: 30 }) | 필터로 조회 |
db.users.findOne({ name: "John" }) | 단일 문서 조회 |
db.users.find({ age: { $gt: 25 } }) | 초과 |
db.users.find({ age: { $gte: 25, $lte: 35 } }) | 범위 쿼리 |
db.users.find({ status: { $in: ["A", "B"] } }) | 배열 내 |
db.users.find({ $or: [{ age: 25 }, { status: "A" }] }) | OR 조건 |
db.users.find({ $and: [{ age: 25 }, { status: "A" }] }) | AND 조건 |
db.users.find({ name: /^J/ }) | 정규식 매칭 |
db.users.find({ email: { $exists: true } }) | 필드 존재 |
db.users.find({ tags: "mongodb" }) | 배열 포함 |
db.users.find({ "address.city": "Seoul" }) | 중첩 필드 |
db.users.find({}, { name: 1, email: 1 }) | 필드 포함 |
db.users.find({}, { password: 0 }) | 필드 제외 |
db.users.find().sort({ age: 1 }) | 오름차순 정렬 |
db.users.find().sort({ age: -1 }) | 내림차순 정렬 |
db.users.find().limit(10) | 결과 제한 |
db.users.find().skip(10).limit(10) | 페이지네이션 |
db.users.find().count() | 문서 수 세기 |
db.users.distinct("status") | 고유 값 |
db.users.updateOne(
{ name: "John" },
{ $set: { age: 31 } }
) | 단일 문서 업데이트 |
db.users.updateMany(
{ status: "A" },
{ $set: { status: "B" } }
) | 여러 문서 업데이트 |
db.users.updateOne(
{ name: "John" },
{ $inc: { age: 1 } }
) | 필드 증가 |
db.users.updateOne(
{ name: "John" },
{ $unset: { tempField: "" } }
) | 필드 제거 |
db.users.updateOne(
{ name: "John" },
{ $push: { tags: "new" } }
) | 배열에 추가 |
db.users.updateOne(
{ name: "John" },
{ $pull: { tags: "old" } }
) | 배열에서 제거 |
db.users.updateOne(
{ name: "John" },
{ $addToSet: { tags: "unique" } }
) | 배열에 고유 값 추가 |
db.users.replaceOne(
{ name: "John" },
{ name: "John", age: 32, status: "A" }
) | 문서 교체 |
db.users.updateOne(
{ name: "New" },
{ $set: { name: "New", age: 25 } },
{ upsert: true }
) | 업서트 |
db.users.deleteOne({ name: "John" }) | 단일 문서 삭제 |
db.users.deleteMany({ status: "inactive" }) | 여러 문서 삭제 |
db.users.deleteMany({}) | 모든 문서 삭제 |
db.users.findOneAndDelete({ name: "John" }) | 조회 후 삭제 |
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$customer", total: { $sum: "$amount" } } }
]) | 매칭 및 그룹화 |
db.users.aggregate([
{ $project: { name: 1, year: { $year: "$createdAt" } } }
]) | 필드 프로젝트 |
db.orders.aggregate([
{ $sort: { amount: -1 } },
{ $limit: 5 }
]) | 정렬 및 제한 |
db.orders.aggregate([
{ $unwind: "$items" }
]) | 배열 풀기 |
db.orders.aggregate([
{ $lookup: {
from: "users",
localField: "userId",
foreignField: "_id",
as: "user"
}}
]) | 컬렉션 조인 |
{ $sum: "$amount" } | 값 합계 |
{ $avg: "$price" } | 평균 값 |
{ $min: "$date" } | 최소 값 |
{ $max: "$date" } | 최대 값 |
{ $first: "$name" } | 첫 번째 값 |
{ $last: "$name" } | 마지막 값 |
{ $push: "$item" } | 배열에 추가 |
{ $addToSet: "$tag" } | 배열에 고유 값 추가 |
db.users.createIndex({ email: 1 }) | 오름차순 인덱스 생성 |
db.users.createIndex({ score: -1 }) | 내림차순 인덱스 생성 |
db.users.createIndex({ email: 1 }, { unique: true }) | 유니크 인덱스 생성 |
db.users.createIndex({ name: 1, age: -1 }) | 복합 인덱스 |
db.users.createIndex({ bio: "text" }) | 텍스트 인덱스 |
db.places.createIndex({ location: "2dsphere" }) | 지리공간 인덱스 |
db.logs.createIndex(
{ createdAt: 1 },
{ expireAfterSeconds: 3600 }
) | TTL 인덱스 |
db.users.createIndex(
{ email: 1 },
{ partialFilterExpression: { status: "active" } }
) | 부분 인덱스 |
db.users.getIndexes() | 인덱스 나열 |
db.users.dropIndex("email_1") | 인덱스 삭제 |
db.users.dropIndexes() | 모든 인덱스 삭제 |
db.createUser({ user: "admin", pwd: "pass", roles: ["readWrite"] }) | 사용자 생성 |
db.updateUser("admin", { pwd: "newpass" }) | 사용자 업데이트 |
db.dropUser("admin") | 사용자 삭제 |
db.getUsers() | 사용자 나열 |
db.grantRolesToUser("user", ["dbAdmin"]) | 역할 부여 |
mongodump --db=dbname --out=/backup/ | 데이터베이스 백업 |
mongorestore --db=dbname /backup/dbname/ | 데이터베이스 복원 |
mongoexport --db=db --collection=col --out=file.json | 컬렉션 내보내기 |
mongoimport --db=db --collection=col --file=file.json | 컬렉션 가져오기 |
db.serverStatus() | 서버 상태 |
db.currentOp() | 현재 작업 |
db.collection.stats() | 컬렉션 통계 |
db.collection.find().explain("executionStats") | 쿼리 실행 통계 |
db.setProfilingLevel(1, { slowms: 100 }) | 프로파일링 활성화 |
db.system.profile.find() | 느린 쿼리 보기 |
db.collection.validate() | 컬렉션 유효성 검사 |
db.repairDatabase() | 데이터베이스 복구 |