Home MongoDB의 Shell 명령어, mongosh
Post
Cancel

MongoDB의 Shell 명령어, mongosh

mongosh를 이용해 MongoDB deployment에 연결하고, DB CRUD를 구현해보겠습니다.

MongoDB Shell

MongoDB 서비스를 실행한 후, mongoDB Shell을 사용하겠습니다.

1
brew services start mongodb-community@6.0
1
mongosh

이제부터 mongoDB shell로 조작할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
Current Mongosh Log ID: ________________________
Connecting to:          mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.10.3
Using MongoDB:          6.0.6
Using Mongosh:          1.10.3

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2023-08-08T16:39:18.427+09:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
------

test>

MongoDB shell 명령어

MongoDB deployment에 MongoDB Shell을 사용해 연결하기

로컬 MongoDB 배포가 실행되어 있거나, MongoDB Atlas(무료 클라우드 호스팅 배포)가 실행되어 있어야 MongoDB Shell을 사용할 수 있습니다.

기본 포트는 27017입니다.

아래 명령어를 사용해 MongoDB 로컬 배포에 연결할 수 있습니다.

1
mongosh

위 명령은 아래 명령과 동일합니다.

1
mongosh 'mongodb://localhost:27017'

다른 포트로 연결하기 (로컬)

두 명령은 같습니다.

1
mongosh --port 28015
1
mongosh "mongodb://localhost:28015"

원격 호스트의 deployment에 연결하기

1
mongosh "mongodb://mongodb0.example.com:28015"
1
mongosh --host mongodb0.example.com --port 28015

--port를 생략하면 기본 포트 27017로 연결합니다.

인증 연결하기

authentication을 요구하는 MongoDB deployment에 연결하려면 --username, --authenticationDatabase 옵션을 사용합니다.

admin DB의 유저명 alice로 인증하려면 아래와 같이 사용합니다.

1
mongosh "mongodb://mongodb0.example.com:28015" --username alice --authenticationDatabase admin

암호를 제공하려면 --password 옵션을 사용합니다.

에디터로 명령어 입력하기

  1. edit을 이용해 외부 에디터를 사용합니다.
  2. .editor를 이용해 내장 에디터를 사용합니다.

저는 아래 명령어로 외부 에디터 vi를 연결했습니다.

1
config.set('editor', 'vi')

DB

존재하는 DB 조회

1
2
show databases
show dbs

현재 사용중인 DB 조회

1
db

특정 DB 사용, 생성

1
use db_name

db_name이라는 이름의 데이터베이스를 사용합니다. 없다면 생성하고 해당 DB로 전환합니다.

DB 내 collection이 하나도 없다면, show dbs에 표시되지 않습니다.

현재 사용중인 DB 삭제

1
db.dropDatabase()

Collection

collection 조회

1
show collections

collection 생성

1
db.createCollection('collection_name')

collection을 생성합니다. 이미 존재한다면 에러가 발생합니다.

collection 삭제

1
db.collection.drop()

Document

collection 내 모든 document 조회

1
db.collection.find()

특정 document 조회

1
db.collection.find([query], [projection])
  • query: document 조회 기준으로, document 타입입니다.
  • projection: document 조회시 보일 field 지정합니다. document 타입입니다.

단일 document 삽입

1
db.collection.insertOne([document])

document에 _id 필드를 지정하지 않으면 MongoDB가 ObjectId 값이 있는 필드를 새 document에 추가합니다.

다중 document 삽입

1
db.collection.insertMany([document_list])

단일 document 수정

1
db.collection.updateOne([filter], [update], [options])
  • filter: 수정 적용 대상으로, document 타입입니다.
  • update: 수정할 내용으로, document 타입입니다.
  • options: 적용 옵션으로, document 타입입니다.

다중 document 수정

1
db.collection.updateMany([filter], [update], [options])

단일 document 대체

1
db.collection.replaceOne([filter], [update], [option])

필드를 업데이트하거나 추가할 수 있는 replaceOne()과는 다르게, 해당 document 전체를 대체합니다.

업데이트할 새 document에 포함되지 않은 이전 document의 필드는 손실됩니다.

단일 document 삭제

1
db.collection.deleteOne([filter])

다중 document 삭제

1
db.collection.deleteMany([filter])

Query Operators

  • $eq: 지정된 값과 같은 값
  • $ne: 지정된 값과 같지 않은 값
  • $gt: 지정된 값보다 큰 값
  • $gte: 지정된 값보다 크거나 작은 값
  • $lt: 지정된 값보다 작은 값
  • $lte: 지정된 값보다 작거나 같은 값
  • $in: 배열에 속하는 값
  • $nin: 배열에 속하지 않은 값

Logical Operators

  • $and: 두 절의 조건과 일치하는 모든 document 반환
  • $not: 조건과 일치하지 않는 document 반환
  • $or: 두 절의 조건 중 하나라도 일치하는 document 반환
  • $nor: 두 절의 조건과 모두 일치하지 않는 document 반환

예시

등급이 PG이거나 PG-13인 모든 영화들을 sample_mflix.movies에서 가져오겠습니다.

1
2
use sample_mflix
db.movies.find( { rated: { $in: [ 'PG', 'PG-13' ] } } )

멕시코에서 개봉했고 IMDB 평가가 7이상인 모든 영화들을 가져오겠습니다.

1
2
use sample_mflix
db.movies.find( { countries: 'Mexico', 'imdb.rating': { $gte: 7 } } )

2010년에 개봉했고, 최소 5개의 상을 수상했거나 장르가 드라마인 모든 영화들을 가져오겠습니다.

1
2
3
4
5
use sample_mflix
db.movies.find( {
     year: 2010,
     $or: [ { 'awards.wins': { $gte: 5 } }, { genres: 'Drama' } ]
} )

참고

MongoDB Shell

This post is licensed under CC BY 4.0 by the author.