본문 바로가기

Study/Mongo & Mongoose

Mongo shell

Mongo syntax

+) what is DataBase? 

+) MongoDB installation guide for windows

Mongo shell이란 node REFL과 같이, Mongo 코드를 입력하고 평가할 수 있는 콘솔이다. 이곳에서 새로운 데이터베이스를 생성하고, 관리할 수 있다. 

 

start & exit

  1. cls | clear console  
  2. ctrl + c | mongo 종료
    • 만든 데이터베이스에 아무런 데이터가 없다면, mongo가 종료되면서 해당 데이터베이스도 사라짐
  3. use dbName | 데이터베이스를 만든다.
  4. db | 현재 사용하고 있는 데이터베이스를 확인한다.  
  5. show dbs | 모든 데이터베이스를 확인한다.
    • 이 때 데이터가 들어있지 않은 데이터베이스는 목록에서 확인할 수 없음

CRUD with Mongo Shell

insert (Create)

MongoDB의 데이터는 collection이라는 데이터 그룹 안에 저장된다. collection이 없는 상태에서 데이터를 저장하면, 자동으로 collection이 만들어진다. 

 

// 컬렉션에 데이터 추가하기

db.dogs.insertOne(
   { name: "Louis", age: 3, breed: "corgi", catFriendly: false }
)

db.dogs.insertMany([ // or just insert
   { name: "Wyatt", age: 13, breed: "golden", catFriendly: true },
   { name: "Todd", age: 4, breed: "corgi", catFriendly: false }   
])

 

  1. show collections 
  2. db.colName.insertOne({ }) | 컬렉션에 인자로 전달한 데이터를 추가한다. 
    • db에는 현재 사용하고 있는 데이터베이스가 할당된다. 
    • 인자로 전달된 데이터는 BSON 형식으로 변환되어 저장된다. 
    • 정상적으로 데이터가 저장되면, acknowledged: true와 함께 insertedId가 반환된다. 
  3. db.colName.insertMany([ {}, {}, ..., {} ]) | 컬렉션에 여러 데이터를 추가한다. insert라고만 작성해도 동일하게 동작한다. 
    • 반환되는 메세지를 통해 몇 개의 데이터가 삽입되었는지 확인할 수 있다(nInserted).

find(Read)

// 조건에 맞는 데이터 반환 
 db.dogs.find({ catFriendly: true })
 db.dogs.findOne( { " personality.catFriendly ": true })

 

  1. db.colName.find() | 컬렉션에 저장된 데이터를 모두 확인한다. 
    • db.colName.find( { } ) | 조건이 비어있는 상태와 같으므로, 컬렉션의 모든 데이터를 반환한다.  
  2. db.colName.find( { filter} ) | 조건에 맞는 데이터를 모두 반환한다. 
  3. db.colName.findOne( { filter } ) | 조건에 맞는 데이터를 하나만 반환한다. 
    • 이 때 반환되는 것은, 데이터 자체가 아니라 데이터를 가리키고 있는 cursor이다.
  4. db.col.findOne( { " personality.catFriendly ": true }) | 중첩된 객체 데이터를 조건으로 사용하고 싶을 때에는 따옴표나 쌍따옴표와 마침표를 사용한다.

Update

데이터를 업데이트 하고자 할 때 기본적으로 두 가지를 정의해야 한다. 먼저 어떤 데이터를 수정할 것인지를 정하고 나서, 어떤 방법으로 업데이트 할 것인지를 정한다. 

 

 // 이름이 Louis인 데이터를 업데이트 
 db.dogs.updateOne({ name: "Louis" }, { $set: {age: 4, catFriendly: false} })
 db.dogs.updateMany({ catFriendly: false }, { $set: {catFriendly: true}, $currentDate: { updated: true }})

 

  1. db.colName.updateOne({ filter }, { $set : { field: new value } } ) | 조건에 의해 반환되는 하나의 데이터를 업데이트한다. 
    • $set은 선택된 값을 새로운 값으로 수정/ 추가해 주는 operator이다. 
    • 원본 데이터에 존재하지 않는 field를 지정하면, 데이터에 새로운 field가 추가된다. 
  2. db.colName.updateMany({ filter }, { $set : { field: new value } } ) | 조건에 맞는 모든 데이터를 업데이트한다. 
  3. db.colName.replaceOne( { filter }, {  field1: val1, field2: val2, field3: val3, ... }) | 조건에 맞는 데이터의 모든 필드를 새로운 값으로 수정한다(데이터 아이디는 제외). 

+) $currentDate: { field: true } | 어떤 필드이든지, 값을 true로 할당하면 해당 필드의 값이 현재 시각으로 업데이트된다. 주로 필드 이름을 lastChanged와 같이 사용한다. 

Delete

 // 이름이 Louis이고 age가 3인 데이터를 삭제
 db.dogs.deleteOne({ name: "Louis", age: 3 })

 

  1. db.colName.deleteOne( {filter} ) | 조건에 맞는 데이터를 삭제한다. 
  2. db.colName.deleteMany( {filter} ) | 조건에 맞는 모든 데이터를 삭제한다. 
  3. db.colName.deleteMany( { } ) | 조건이 비어있으므로, 해당 컬렉션의 모든 데이터를 삭제한다. 

Operators

comparison operators

// age > 4인 모든 데이터 찾기
db.dogs.find({ age: {$gt: 4} })

// quantity가 5 또는 15인 모든 데이터 찾기
db.inventory.find( { quantity: { $in: [ 5, 15 ] } }

 

  1. $gt | greater than
  2. $gte | greater than or equal
  3. $in | 필드의 값이 전달된 배열의 값 중 하나와 일치하는 데이터를 선택
  4. $nin | not in 
  5. $ne | not equal 

Logical Operators

'Study > Mongo & Mongoose' 카테고리의 다른 글

Schema  (0) 2022.06.08
what is Mongoose?  (0) 2022.06.06
what is BSON?  (0) 2022.06.04