본문 바로가기

DB

MongoDB CRUD

728x90
반응형

로컬에서 간단히 Datatbase를 생성해보고 collection도 만들어보고 crud를 해보는 과정

모든 실습은 mongosh로 진행

 

1. Database, collection 생성

test> show dbs
admin   40.00 KiB
config  60.00 KiB
local   72.00 KiB
test> use alcohol
switched to db alcohol
alcohol> db.alcoholData.insertOne({"type":"tequila"})
{
  acknowledged: true,
  insertedId: ObjectId("64b380214ad109d58f687356")
}

use {사용할 데이터베이스} 명령어를 통해 database switch를 한다. 

그리고 insertOne 명령어를 통해 document를 한 개 이상 삽입하면 database, collection이 자동생성된다. 

 

2. insert

alcohol> db.alcoholData.insertOne({type: "beer"})
{
  acknowledged: true,
  insertedId: ObjectId("64b384154ad109d58f687357")
}

데킬라 데이터를 넣었으니 beer도 넣어준다. insert하고 나면 return 값으로 insertedId가 나온다. 

이건 몽고디비에서 자동으로 생성해주는 id값으로 unique한 값이다. 

 

3. find

alcohol> db.alcoholData.find().pretty()
[
  { _id: ObjectId("64b380214ad109d58f687356"), type: 'tequila' },
  { _id: ObjectId("64b384154ad109d58f687357"), type: 'beer' }
]

find()에 어떤 옵션도 주지 않으면 있는 document 전체를 read 할 수 있다. 

pretty()는 사람이 보기 편한 json 형식의 구조로 데이터를 보여주는 함수이다. 

 

4. updateOne

alcohol> db.alcoholData.updateOne({type:"beer"}, {$set: {degree: 5}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}
alcohol> db.alcoholData.find().pretty()
[
  { _id: ObjectId("64b380214ad109d58f687356"), type: 'tequila' },
  {
    _id: ObjectId("64b384154ad109d58f687357"),
    type: 'beer',
    degree: 5
  }
]

updateOne(fliter, updateOption)

업데이트 할 document를 flitering 하고 어떻게 데이터를 set 할지 명령어를 작성해준다. 

위 예제에서는 beer의 degree를 5로 set 해주었는데, 기존 스키마에 없었던 항목이 추가되었기 때문에 데이터 속성이 추가되었다. 

 

5. updateMany

alcohol> db.alcoholData.updateMany({},{$set:{marker:"toDelete"}})
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 2,
  modifiedCount: 2,
  upsertedCount: 0
}
alcohol> db.alcoholData.find().pretty()
[
  {
    _id: ObjectId("64b380214ad109d58f687356"),
    type: 'tequila',
    marker: 'toDelete'
  },
  {
    _id: ObjectId("64b384154ad109d58f687357"),
    type: 'beer',
    degree: 5,
    marker: 'toDelete'
  }
]

updateMany function의 fliter에 아무 조건도 걸지 않으면 전체 document들이 update 된다. 

위 예제에서는 delete를 위한 marker 속성을 전체 document에 만들어 주었다. 

 

6. deleteMany

alcohol> db.alcoholData.deleteMany({marker:"toDelete"})
{ acknowledged: true, deletedCount: 2 }
alcohol> db.alcoholData.find().pretty()

delete 역시 document 하나씩 지울 수 있기도 하지만 여러 document를 동시에 지울 수 있다. 

위 예시의 경우 toDelete라는 marker 속성을 전체 document에 생성했기 때문에 전체 collection의 데이터가 삭제되었음을 확인 할 수 있다. 

728x90
반응형

'DB' 카테고리의 다른 글

MongoDB embedded documents  (0) 2023.07.16
MongoDB Projection  (0) 2023.07.16
MongoDB Cursor  (0) 2023.07.16
MongoDB 기본 개념  (0) 2023.07.16
MySQL Replication  (0) 2022.08.15