MongoDB의 문자열이 포함된 필드 확인

Tahseen Tauseef 2023년6월20일
  1. MongoDB에서 regex 사용
  2. 필드에 MongoDB의 문자열이 포함되어 있는지 확인
  3. 필드에 문자열이 포함되어 있는지 확인(대소문자 구분 안 함)
  4. 필드에 문자열이 포함되어 있는지 확인(결과 없음)
  5. 필드에 특정 시작 문자열이 포함되어 있는지 확인
  6. 필드에 특정 종료 문자열이 포함되어 있는지 확인
MongoDB의 문자열이 포함된 필드 확인

이 게시물은 MongoDB에서 정규식을 사용하여 필드에 문자열이 포함되어 있는지 여부를 확인하는 방법을 다룹니다.

MongoDB에서 regex 사용

정규식(regex)은 검색 패턴을 정의하는 텍스트 문자열입니다. 몇몇 regex 엔진은 약간 다른 구문으로 작성되지만 기본 사항은 동일합니다.

regex 표현식은 다음 예제와 같이 단일 슬래시(/)로 양쪽에 포함된 문자열(일련의 문자)입니다.

db.collection.find({
    "k": /pattern/
  })

그러나 현재 mongoplayground.net,에 대한 쿼리에서 쉘 정규식이 작동하지 않으므로 대신 아래 주어진 표현식을 사용할 수 있습니다.

db.collection.find({
    "k": {
      "$regex": "pattern"
    }
  })

MongoDB의 $regex 연산자는 문자열이 포함된 쿼리를 찾는 데 사용됩니다. MongoDB를 사용하면 정규식을 사용하여 쿼리를 통해 문자열에서 패턴을 찾을 수 있습니다.

$regex 연산자는 정규식 기능을 사용하여 쿼리의 패턴 일치 텍스트에 사용됩니다.

통사론:

db.collection.find({"k":{$regex:"pattern"}});

$regex 정규식 연산자에서 전달할 수 있는 값 문자열을 포함하는 해당 필드의 문서를 표시할 수 있습니다. 위의 구문을 이해하기 위해 다음 문서를 사용하여 teams 컬렉션을 만들 수 있습니다.

db={
  "teams": [
    {
      team: "Manchester City ",
      position: "1st",
      points: 70
    },
    {
      team: "Liverpool",
      position: "2nd",
      points: 69
    },
    {
      team: "Chelsea",
      position: "3rd",
      points: 59
    },
    {
      team: "Arsenal",
      position: "4th",
      points: 54
    },
    {
      team: "Tottenham",
      position: "5th",
      points: 51
    },
    {
      team: "Manchester United",
      position: "6th",
      points: 50
    },

  ]
}

필드에 MongoDB의 문자열이 포함되어 있는지 확인

다음 코드를 사용하여 팀 필드에 Man 문자열이 포함된 문서가 있는지 확인할 수 있습니다.

질문:

db.teams.find({
  team: {
    "$regex": "Man"
  }
})

출력:

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "points": 70,
    "position": "1st",
    "team": "Manchester City "
  },
  {
    "_id": ObjectId("5a934e000102030405000005"),
    "points": 50,
    "position": "6th",
    "team": "Manchester United"
  }
]

필드에 문자열이 포함되어 있는지 확인(대소문자 구분 안 함)

MongoDB에서 regex를 사용하여 필드에 대소문자를 구분하지 않는 특정 문자열 값이 포함되어 있는지 확인할 수 있습니다. MongoDB에서 정규 표현식과 함께 $i 옵션을 사용하십시오.

$i 옵션은 지정된 소문자 및 대문자 문자열 값이 있는 필드를 찾는 데 도움이 됩니다.

질문:

db.teams.find({
  team: {
    "$regex": "MAN",
    "options": "$i"
  }
})

출력:

[
  {
    "_id": ObjectId("5a934e000102030405000000"),
    "points": 70,
    "position": "1st",
    "team": "Manchester City "
  },
  {
    "_id": ObjectId("5a934e000102030405000005"),
    "points": 50,
    "position": "6th",
    "team": "Manchester United"
  }
]

필드에 문자열이 포함되어 있는지 확인(결과 없음)

필드에 검색한 특정 문자열이 없으면 “문서를 찾을 수 없습니다.“라는 메시지가 표시됩니다. 예를 들어 다음 쿼리를 사용한다고 가정합니다.

질문:

db.teams.find({
  team: {
    "$regex": "Wolves"
  }
})

출력:

no document found

팀 이름에 Wolves 문자열이 포함된 문서가 없으므로 문서를 찾을 수 없습니다.라는 출력이 표시됩니다.

필드에 특정 시작 문자열이 포함되어 있는지 확인

MongoDB에서 정규식을 사용하여 필드가 특정 문자열 값으로 시작하는지 검사합니다.

질문:

db.teams.find({
  team: {
    "$regex": "^C"
  }
})

출력:

[
  {
    "_id": ObjectId("5a934e000102030405000002"),
    "points": 59,
    "position": "3rd",
    "team": "Chelsea"
  }
]

MongoDB에서 regex의 도움으로 "C" 문자로 시작하는 문서 하나를 성공적으로 찾았습니다.

필드에 특정 종료 문자열이 포함되어 있는지 확인

이 예제에서 필드가 지정된 문자열 값으로 끝나는지 확인합시다.

질문:

db.teams.find({
  team: {
    "$regex": "l$"
  }
})

출력:

[
  {
    "_id": ObjectId("5a934e000102030405000001"),
    "points": 69,
    "position": "2nd",
    "team": "Liverpool"
  },
  {
    "_id": ObjectId("5a934e000102030405000003"),
    "points": 54,
    "position": "4th",
    "team": "Arsenal"
  }
]

MongoDB에서 regex의 도움으로 "l" 문자로 끝나는 두 개의 문서를 찾았습니다.

이 기사를 통해 필드에 문자열이 포함되어 있는지 확인하기 위해 MongoDB에서 $regex를 사용하는 다양한 방법의 예를 배웠습니다.