헤르메스 LIFE

[MongoDB] MongoDB 명령어 기본 본문

Database

[MongoDB] MongoDB 명령어 기본

헤르메스의날개 2023. 12. 5. 23:56
728x90

MongoDB 기본명령어에 대해 나열하겠습니다.

1. Database 생성/접속(선택)/삭제

# 생성과 접속의 명령이 같습니다.
# use [Database명]
use spring

# Database 삭제
# 반드시 선택 후 삭제해야 합니다. 되돌릴 수 없습니다.
db.dropDatabase()

2. Collection 생성/목록/삭제

# Collection 생성
# db.createCollection("[Collection명]")
db.createCollection("movies")

# Collection 목록
show collections

# Collection 삭제
db.movies.drop()

3. 데이터 조회

# 전체조회
# db.[Collection명].find()
db.movies.find()

# 단건조건조회 ( 조건이 무조건 같아야 합니다. )
# db.[Collection명].findOne({ field:"조건" })
db.movies.findOne({ movieId:1 })

# Equal(=) 조건조회 ( 조건이 무조건 같아야 합니다. )
# db.[Collection명].find({ field:"조건" })
db.movies.find({ movieId:1 })

# AND 조건조회
# db.[Collection명].find({ field:"조건"}, {"",""}, ... )
db.movies.find( { movieId:1 }, { title:"Toy Story (1995)" } )
db.movies.find({ $and:[{movieId:1 }, { title:/^Toy/ }] })

# OR 조건조회
# db.[Collection명].find({ $or:[{field:"조건"}, {"",""}, ...] })
db.movies.find({ $or:[{ title:/^Toy/ }, { title:/Love$/ }] })

# AND, OR 조회
# db.[Collection명].find({ field:"조건", $or:[{field:"조건"}, {"",""}, ...] })
db.movies.find({ movieId:1, $or:[{ title:/^Toy/ }, { title:/Love$/ }] })

# LIKE 검색
# 정규표현식 /검색어/:%검색어%, '^검색어':검색어%, '검색어$':%검색어
db.movies.find({ title:/Love/ })
db.movies.find({ title:/^Love/ })
db.movies.find({ title:/Love$/ })
# Int32 타입 조회
db.getCollection("movies").find({
    "$expr": {
        "$regexMatch": {
           "input": {"$toString": "$movieId"}, 
           "regex": /^123/ 
        }
    }    
}
)

# 부등호 조회 >
# db.[Collection명].find({ field:{ $gt:"조건" } })
db.ratings.find({ rating:{$gt:3.5} })

# 부등호 조회 <
# db.[Collection명].find({ field:{ $lt:"조건" } })
db.ratings.find({ rating:{$lt:1.5} })

# 부등호 조회 >=
# db.[Collection명].find({ field:{ $gte:"조건" } })
db.ratings.find({ rating:{$gte:3.5} })

# 부등호 조회 <=
# db.[Collection명].find({ field:{ $lte:"조건" } })
db.ratings.find({ rating:{$lte:1.5} })

# 부등호 조회 !=
# db.[Collection명].find({ field:{ $ne:"조건" } })
db.ratings.find({ rating:{$ne:1.5} })

# 부등호 조회 > AND <
# db.[Collection명].find({ $and:[ {  field:{$gte:"조건"}, field:{ $lte:"조건"} }  ] })
db.ratings.find({ $and:[ { rating:{$gte:2.5}, rating:{$lte:3.5} }  ] })

# 존재검사
# db.[Collection명].find({ field:{$exists:"조건"} })
db.movies.find({ title:{$exists:true} })   # title 컬럼에 값이 있는 데이터
db.movies.find({ title:{$exists:false} })  # title 컬럼에 값이 없는 데이터

# 정렬(Sort)
# db.[Collection명].find({}).sort({ field:1})   // 오름차순
# db.[Collection명].find({}).sort({ field:-1})  // 내림차순
# db.[Collection명].find({}).sort({ field:-1, field:1, ...})  // 복수조건
db.movies.find({}).sort({movieId:1})
db.movies.find({}).sort({movieId:-1})
db.movies.find({}).sort({title:1, movieId:-1})

# Limit
# db.[Collection명].find({}).limit("limit수량")
db.movies.find({}).limit(10)

# Skip
# db.[Collection명].find({}).skip("skip수량")
db.movies.find({}).skip(10)

# Distinct
# db.[Collection명].distinct("컬럼명")               // 배열로 리턴함
db.movies.distinct("genres")

4. Insert, Update, Delete

# insert (3.2버전이전)
# insertOne (3.2버전이상) / insertMany (3.2버전이상)
# db.[Collection명].insert()
// Default 무조건 한건만 Insert됨.
db.movies.insert(
    {"movieId":300000, "title":"영화1", "genres":"Comedy"}
)

db.movies.insertOne(
    {"movieId":300000, "title":"영화1", "genres":"Comedy"}
)

db.movies.insert(
    [
      {"movieId":300001, "title":"영화2", "genres":"Comedy"}
    , {"movieId":300002, "title":"영화3", "genres":"Comedy"}
    , {"movieId":300003, "title":"영화4", "genres":"Comedy"}
    ]
)

db.movies.insertMany(
    [
      {"movieId":300001, "title":"영화2", "genres":"Comedy"}
    , {"movieId":300002, "title":"영화3", "genres":"Comedy"}
    , {"movieId":300003, "title":"영화4", "genres":"Comedy"}
    ]
)

# update
# db.[Collection명].update()
# updateOne (3.2버전이상) / updateMany (3.2버전이상)
// Default 무조건 한건만 Update됨
db.movies.update(
      { movieId:300000 }
    , {$set:
        {
          title:"영화1-수정"
        , genres:"Drama"
        }
    }
)
// Default 무조건 한건만 Update됨
db.movies.updateOne(
      { movieId:300000 }
    , {$set:
        {
          title:"영화1-수정"
        , genres:"Drama"
        }
    }
)

// 여러건 수정
db.movies.update(
      { movieId:300002 }
    , {$set:
        {
          title:"영화3-수정"
        , genres:"Drama"
        }
    }
    , {multi:true}
)
// 여러건 수정(3.2버전이상)
db.movies.updateMany(
      { movieId:300001 }
    , {$set:
        {
          title:"영화1-수정"
        , genres:"Drama"
        }
    }
)

# Merge
db.movies.update(
      { movieId:300005 }
    , {$set: {
          movieId:300005
        , title:"영화5"
        , genres:"Drama"
        }
      }
    , { upsert: true }
)

# 삭제
# db.[Collection명].remove()
// 조건 삭제
db.movies.remove({ movieId:300005 })
// 한건 삭제
db.movies.deleteOne({ movieId:300005 })
// 다건 삭제
db.movies.deleteMany({ movieId:300001 })
db.movies.deleteMany({ movieId:300001, movieId:300002  })

// 전체 삭제
db.movies.remove({})

5. Group 함수

# Group Count
# db.[Collection명].aggregate([{ $group:{ _id:"$필드명", "보여질컬럼명":{$sum:1} } }])
db.ratings.aggregate([{
    $group:{ _id:"$userId", 소계:{$sum:1} }
}])

# Group Sum
# db.[Collection명].aggregate([{ $group:{ _id:"$필드명", "보여질컬럼명":{$sum:"$Sum컬럼명"} } }])
db.ratings.aggregate([{
    $group:{ _id:"$userId", 소계:{$sum:"$rating"} }
}])

# Group Avg
# db.[Collection명].aggregate([{ $group:{ _id:"$필드명", "보여질컬럼명":{$avg:"$Avg컬럼명"} } }])
db.ratings.aggregate([{
    $group:{ _id:"$userId", 소계:{$avg:"$rating"} }
}])

# Group Min
# db.[Collection명].aggregate([{ $group:{ _id:"$필드명", "보여질컬럼명":{$min:"$Min컬럼명"} } }])
db.ratings.aggregate([{
    $group:{ _id:"$userId", 소계:{$min:"$rating"} }
}])

# Group Max
# db.[Collection명].aggregate([{ $group:{ _id:"$필드명", "보여질컬럼명":{$max:"$Max될컬럼명"} } }])
db.ratings.aggregate([{
    $group:{ _id:"$userId", 소계:{$max:"$rating"} }
}])

6. 페이지 처리

# 1페이지당 10건씩 출력
# count = ( Page - 1 ) * 10
// ( 1 Page - 1 ) * 10
db.movies.find({}).skip(0).limit(10)
// ( 2 Page - 1 ) * 10
db.movies.find({}).skip(10).limit(10)
// ( 3 Page - 1 ) * 10
db.movies.find({}).skip(20).limit(10)

7. Index 생성 / 삭제

# Index 생성
# db.[Collection명].createIndex( { <field>:1 } )         // 오름차순
# db.[Collection명].createIndex( { <field>:-1 } )        // 내림차순
db.movies.createIndex({ movieId:1 }) 

# Multi Index 생성
# db.[Collection명].createIndex( { <field>:1, <field>:-1 } )
db.movies.createIndex({ movieId:1, title:1 }) 

# Index 조회
db.movies.getIndexes()

# Index 삭제
# db.[Collection명].dropIndex( { <field>:1 } ) 
db.movies.dropIndex({ movieId:1 }) 

# Unique Index
db.movies.createIndex( { movieId:1 }, { unique:true } )
// 입력 테스트
db.movies.insertOne(
    {"movieId":1, "title":"영화1", "genres":"Comedy"}
)
//E11000 duplicate key error collection: spring.movies index: movieId_1 dup key: { movieId: 1 }

 


https://hermeslog.tistory.com/734

 

[Docker] Docker 에 MongoDB설치하기

이번엔 MongoDB를 설치할 예정입니다. ? mongodb 조회 C:\>docker search mongo NAME DESCRIPTION STARS OFFICIAL AUTOMATED mongo MongoDB document databases provide high avai… 9914 [OK] mongo-express Web-based MongoDB admin interface, written w…

hermeslog.tistory.com

https://hermeslog.tistory.com/735

 

[MongoDB] Mongo Database 샘플 데이터 로드

MongoDB에 공개 프로그램을 제공하는 줄 몰랐네요. 그중 Compass 라는 GUI Tool을 다운 받았습니다. https://www.mongodb.com/try/download/compass Try MongoDB Tools - Download Free Here Free download for MongoDB tools to do more with y

hermeslog.tistory.com

 

728x90