티스토리 뷰
MongoDB 설치는 mongodb.com 참고하여 알아서 설치하자
MongoDB의 컬렉션에 데이터를 작성하기 위해선 데이터베이스 서버를 실행해야한다.
# macos 기준
brew services start mongodb-community
몽고디비에 접속한다. 기본 포트는 27017이다. users 컬렉션에 데이터를 간단히 쓰고 읽어보자.
$ mongo
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
> use users
switched to db users
> db.users.insertOne({ "name": "ABC", "age": 22 })
{
"acknowledged" : true,
"insertedId" : ObjectId("60fbd4a9bb1c43ffda3ba44a")
}
> db.users.findOne({ name: "ABC" })
{ "_id" : ObjectId("60fbd4a9bb1c43ffda3ba44a"), "name" : "ABC", "age" : 22 }
컬렉션을 생성하지 않았음에도 users 컬렉션에 데이터를 쓰고 읽은 것을 볼 수 있다. 데이터를 저장하면 MongoDB는 컬렉션을 암시적으로 생성한다.
다큐먼트를 조회한 것을 보면 "_id" 필드가 존재하는 것을 볼 수 있는데, MongoDB가 자동으로 생성한 ObjectId 타입의 고유 아이디이다. 다큐먼트마다 고유의 "_id"가 존재한다. "_id"에 들어가는 문자열은 해시값인데, 타임스탬프도 포함되므로 생성 시간 순 정렬을 할 때도 사용할 수 있다.
다큐먼트의 필드 값을 보면 문자열도 있고 숫자도 있음을 알 수 있다. MongoDB에는 여러 데이터 타입이 있으니 궁금하면 참조 링크를 확인하자.
CRUD operations
MongoDB는 데이터를 읽고 쓰고 수정하고 삭제하기 위한 명령들을 제공한다.
- Create: insertOne, insertMany
- Read: findOne, find
- Update: updateOne, updateMany, replaceOne
- Delete: deleteOne, deleteMany
이 외에도 Bulk Write 등을 제공하니 자세한 것은 아래 MongoDB operations 참조를 확인하자.
Create를 제외한 나머지 명령의 첫번째 인자는 필터다. 아래와 같이 필터로 찾거나 삭제하거나 업데이트 할 수 있다.
> use users
switched to db users
> db.users.insertOne({ "name": "asdf", "age": 33, "address": "Seoul" })
{
"acknowledged" : true,
"insertedId" : ObjectId("60fbdb07bb1c43ffda3ba44b")
}
> db.users.findOne({ name: "asdf" })
{
"_id" : ObjectId("60fbdb07bb1c43ffda3ba44b"),
"name" : "asdf",
"age" : 33,
"address" : "Seoul"
}
> db.users.updateOne({ age: 33 }, { $set: { name: "test123" } })
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.users.findOne({ name: "test123" })
{
"_id" : ObjectId("60fbdb07bb1c43ffda3ba44b"),
"name" : "test123",
"age" : 33,
"address" : "Seoul"
}
> db.users.deleteOne({ name: "test123" })
{ "acknowledged" : true, "deletedCount" : 1 }
> db.users.findOne({ name: "test123" })
null
updateOne 필터 뒤에 파라미터가 더 들어가는데, 업데이트 할 필드를 지정하는 파라미터이다. "$set"으로 묶인 json을 전달해줘야 지정한 필드만 변경된다. updateOne, updateMany에선 "$set"이 없으면 오류가 나지만, update에선 다큐먼트가 해당 내용으로 replace 돼버린다. update 대신 updateOne, updateMany를 쓰도록 하자.
insertMany는 여러개의 다큐먼트를 생성할 수 있다. 파라미터로 배열을 주면 배열 안의 정보를 가진 다큐먼트가 여러개 생성된다.
> use places
switched to db places
> db.places.insertMany([ { name: "A", address: "B" }, { name: "C", address: "D" } ])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("60fbdc54bb1c43ffda3ba44c"),
ObjectId("60fbdc54bb1c43ffda3ba44d")
]
}
> db.places.find().pretty()
{
"_id" : ObjectId("60fbdc54bb1c43ffda3ba44c"),
"name" : "A",
"address" : "B"
}
{
"_id" : ObjectId("60fbdc54bb1c43ffda3ba44d"),
"name" : "C",
"address" : "D"
}
참조
- MongoDB datatype: https://docs.mongodb.com/manual/reference/bson-types/
- MongoDB CRUD operations: https://docs.mongodb.com/manual/crud/
'프로그래밍 > MongoDB' 카테고리의 다른 글
MongoDB 기초 (0) | 2021.07.24 |
---|
- Total
- Today
- Yesterday
- Closure
- Tasklet
- mybatis
- @Bean
- spring
- Bin
- MySQL
- unity
- @Qualifier
- @Autowired
- Barycentric coordinates
- npm
- thymeleaf cannot resolve
- nodejs
- thymeleaf 변수 인식
- chunk
- @Component
- Linux
- JavaScript
- Bean
- 클로저
- Express
- spring batch
- Check point within polygon
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |