👋 Hello, I am Seung-ho Ham

🧑🏻‍💻 A Developers who create code that changes the world

Development/NoSQL

MongoDB 기초 가이드: 데이터 삽입, 조회, 삭제 및 정규 표현식 활용

Potato_H 2024. 8. 2. 16:04
반응형

MongoDB는 비관계형(NoSQL) 데이터베이스로, 유연한 데이터 모델과 뛰어난 확장성으로 많은 개발자들 사이에서 인기를 얻고 있습니다.

 

MongoDB에서 데이터를 삽입, 조회, 삭제하는 방법과 정규 표현식을 활용한 데이터 필터링 방법을 알아볼 것입니다.

 

 

MongoDB에서 데이터 삽입하기

단일 문서 삽입('insertOne') : 하나의 문서를 삽입할 때는 'insertOne'을 사용합니다.

다음은 'test_2' 컬렉션에 하나의 문서를 삽입하는 코드 입니다.

db.getCollection("test_2").insertOne({
    name: "User100",
    age: 25,
    address: "1001"
})

 

다중 문서 삽입('insertMany') : 여러 문서를 한 번에 삽입하려면 'insertMany'를 사용합니다.

db.getCollection("test_2").insertMany([
    { name: "User101", age: 30, address: "1002" },
    { name: "User102", age: 27, address: "1003" }
])

 

 

MongoDB에서 데이터 조회하기

데이터를 조회할 때는 'find' 메서드를 사용합니다.

기본적으로 'find'메서드는 조건 없이 모든 문서를 반환합니다.

db.getCollection("test_2").find({})

 

 

MongoDB에서 데이터 삭제하기

단일 문서 삭제('deleteOne')

db.getCollection("test_2").deleteOne({ name: "User100" })

 

다중 문서 삭제('deleteMany')

age 필드 값이 25 이상인 모든 문서를 삭제하는 코드 입니다.

-> $gte는 MongoDB의 비교 연산자 중 하나로, "greater than or equal to" (크거나 같음)을 의미합니다. (아래쪽 설명 있음)

db.getCollection("test_2").deleteMany({ age: { $gte: 25 } })

 

특정 패턴의 문서 삭제 : 정규표현식을 사용하여 특정 패턴을 가진 문서를 삭제할 수 있습니다.

'name' 필드가 'User'로 시작하고 뒤에 숫자가 오는 모든 문서를 삭제할 때 다음과 같이 할 수 있습니다.

db.getCollection("test_2").deleteMany({ name: { $regex: /^User\d+$/ } })

^User\d+$는 "User"로 시작하고 뒤에 숫자가 오는 문자열과 일치하는 패턴을 의미합니다.

 

위 특정 패턴 문서의 삭제에서 궁금증이 생긴 정규 표현식의 기본 구성은 다음과 같습니다.

  • ^: 문자열의 시작
  • User: 문자 그대로 "User"
  • \d+: 하나 이상의 숫자
  • $: 문자열의 끝

 

MongoDB에서 사용할 수 있는 주요 비교 연산자는 데이터베이스 쿼리에서 특정 조건을 만족하는 문서를 찾는데 유용합니다. 아래의 연산자들을 필드의 값을 비교하여 쿼리 조건을 정의하는데 사용됩니다.

 

  • $eq (Equal) : 필드의 값이 지정된 값과 같은 경우 ex. { age: { $eq: 25 } }
  • $ne (Not Equal) : 필드의 값이 지정된 값과 다른 경우 ex. { age: { $ne: 25 } }
  • $gt (Greater Than) : 필드의 값이 지정된 값보다 큰 경우 ex. { age: { $gt: 25 } (age가 25보다 큰 문서를 찾습니다.)
  • $gte (Greater Than or Equal To) : 필드의 값이 지정된 값보다 크거나 같은 경우 ex. { age: { $gte: 25 } (age가 25 이상인 문서를 찾습니다.)
  • $lt (Less Than) : 필드의 값이 지정된 값보다 작은 경우 ex. { age: { $lt: 25 } (age가 25보다 작은 문서를 찾습니다.)
  • $lte (Less Than or Equal To) : 필드의 값이 지정된 값보다 작거나 같은 경우 ex. { age: { $lte: 25 } } (age가 25 이하인 문서를 찾습니다.)
  • $in (In) : 필드의 값이 지정된 값 중 하나와 일치하는 경우 ex. { age: { $in: [25, 30, 35] } }
  • $nin (Not In) : 필드의 값이 지정된 값 중 어느 것도 일치하지 않는 경우. ex.{ age: { $nin: [25, 30, 35] } }
  • $exists (Field Existence) : 필드가 존재하는지 여부를 확인 ex. { age: { $exists: true } }, { age: { $exists: false }
    •  

 

 

 

마지막으로 추가적으로 배우면 좋을 것 같은 MongoDB의 기초적인 데이터 필터링 기능을 찾아보았습니다.

 

인덱스('index') : 인덱스는 데이터베이스 쿼리 성능을 향상시키기 위해 사용하는 데이터 구조 입니다.

인덱스를 설정하면 검색 속도를 크게 개선할 수 있다는 장점이 있습니다.

 

집계(Aggregation) : 집계는 데이터 분석과 변환을 위해 MongoDB에 있는 좋은 기능입니다.

aggregatoion 메서드를 사용하면 데이터를 필터링, 그룹화, 정렬할 수 있습니다.

 

인덱스('index'), 집계(Aggregation) 에 대해서는 더 학습 후 작성해보도록 하겠습니다.