로컬에서 간단히 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의 데이터가 삭제되었음을 확인 할 수 있다.
'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 |