Mongo syntax
+) MongoDB installation guide for windows
Mongo shell이란 node REFL과 같이, Mongo 코드를 입력하고 평가할 수 있는 콘솔이다. 이곳에서 새로운 데이터베이스를 생성하고, 관리할 수 있다.
start & exit
- cls | clear console
- ctrl + c | mongo 종료
- 만든 데이터베이스에 아무런 데이터가 없다면, mongo가 종료되면서 해당 데이터베이스도 사라짐
- use dbName | 데이터베이스를 만든다.
- db | 현재 사용하고 있는 데이터베이스를 확인한다.
- 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 }
])
- show collections
- db.colName.insertOne({ }) | 컬렉션에 인자로 전달한 데이터를 추가한다.
- db에는 현재 사용하고 있는 데이터베이스가 할당된다.
- 인자로 전달된 데이터는 BSON 형식으로 변환되어 저장된다.
- 정상적으로 데이터가 저장되면, acknowledged: true와 함께 insertedId가 반환된다.
- db.colName.insertMany([ {}, {}, ..., {} ]) | 컬렉션에 여러 데이터를 추가한다. insert라고만 작성해도 동일하게 동작한다.
- 반환되는 메세지를 통해 몇 개의 데이터가 삽입되었는지 확인할 수 있다(nInserted).
find(Read)
// 조건에 맞는 데이터 반환
db.dogs.find({ catFriendly: true })
db.dogs.findOne( { " personality.catFriendly ": true })
- db.colName.find() | 컬렉션에 저장된 데이터를 모두 확인한다.
- db.colName.find( { } ) | 조건이 비어있는 상태와 같으므로, 컬렉션의 모든 데이터를 반환한다.
- db.colName.find( { filter} ) | 조건에 맞는 데이터를 모두 반환한다.
- db.colName.findOne( { filter } ) | 조건에 맞는 데이터를 하나만 반환한다.
- 이 때 반환되는 것은, 데이터 자체가 아니라 데이터를 가리키고 있는 cursor이다.
- 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 }})
- db.colName.updateOne({ filter }, { $set : { field: new value } } ) | 조건에 의해 반환되는 하나의 데이터를 업데이트한다.
- $set은 선택된 값을 새로운 값으로 수정/ 추가해 주는 operator이다.
- 원본 데이터에 존재하지 않는 field를 지정하면, 데이터에 새로운 field가 추가된다.
- db.colName.updateMany({ filter }, { $set : { field: new value } } ) | 조건에 맞는 모든 데이터를 업데이트한다.
- 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 })
- db.colName.deleteOne( {filter} ) | 조건에 맞는 데이터를 삭제한다.
- db.colName.deleteMany( {filter} ) | 조건에 맞는 모든 데이터를 삭제한다.
- db.colName.deleteMany( { } ) | 조건이 비어있으므로, 해당 컬렉션의 모든 데이터를 삭제한다.
Operators
comparison operators
// age > 4인 모든 데이터 찾기
db.dogs.find({ age: {$gt: 4} })
// quantity가 5 또는 15인 모든 데이터 찾기
db.inventory.find( { quantity: { $in: [ 5, 15 ] } }
- $gt | greater than
- $gte | greater than or equal
- $in | 필드의 값이 전달된 배열의 값 중 하나와 일치하는 데이터를 선택
- $nin | not in
- $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 |