티스토리 뷰

프로그래밍/MongoDB

MongoDB 시작하기

국윤창 2021. 8. 19. 01:13

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' 카테고리의 다른 글

MongoDB 기초  (0) 2021.07.24
댓글
댓글쓰기 폼