AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

$replaceAll (표현식 연산자)

$replaceAll

input string에 있는 검색 string 또는 정규식 패턴 의 모든 인스턴스를 대체 string으로 바꿉니다.

$replaceAll 대/소문자를 구분하고 발음 구별 부호를 구분하며 collection에 있는 모든 데이터 정렬을 무시합니다.

$replaceAll 연산자 연산자 표현식 구문은 다음과 같습니다.

{ $replaceAll: { input: <expression>, find: <expression>, replacement: <expression> } }
필드
설명

찾기를 적용 할 문자열입니다. 문자열 또는 로 해석되는 모든 유효한 표현식 일 수 있습니다. null input가 누락된 필드 참조하는 경우$replaceAll 은 를 null 반환합니다.

지정된 입력 내에서 검색 할 문자열입니다. 문자열,정규식 또는 로 해석되는 모든 유효한 표현식 일 수 있습니다.null find가 누락된 필드 참조하는 경우$replaceAll 은 를 null 반환합니다.

입력에서 일치하는 모든 찾기 인스턴스를 대체하는 데 사용할 문자열입니다. 문자열 또는 로 해석되는 모든 유효한 표현식 일 수 null 있습니다.

입력, 찾기대체 표현식은 문자열 또는 null (또는 찾기 의 경우 정규식)로 평가되어야 하며, 그렇지 $replaceAll 않으면 은 오류로 인해 실패합니다.

입력 또는 찾기가 누락된 필드 참조하는 경우 을 null 반환합니다.

입력, 찾기 또는 바꾸기 null 중 하나가 로 평가되면 전체 표현식 로 평가됩니다.$replaceAll null

예시
결과

{ $replaceAll: { input: null, find: "abc", replacement: "ABC" } }

null

{ $replaceAll: { input: "abc", find: null, replacement: "ABC" } }

null

{ $replaceAll: { input: "abc", find: "abc", replacement: null } }

null

$replaceAll 표현식에 대한 문자열 일치는 항상 대소문자를 구분하고 발음 부호를 구분합니다. 과 문자열 비교를 수행할 때 구성된 모든 데이터 정렬은 무시됩니다. $replaceAll

예를 들어 데이터 정렬 강도가 1인 샘플 collection을 생성합니다.

db.createCollection( "restaurants", { collation: { locale: "fr", strength: 1 } } )

1의 데이터 정렬 강도는 기본 문자만 비교하고 대소문자 및 분음 부호와 같은 다른 차이점을 무시합니다.

다음으로 예시 문서를 삽입합니다.

db.restaurants.insertMany( [
{ _id: 1, name: "cafe" },
{ _id: 2, name: "Cafe" },
{ _id: 3, name: "café" }
] )

다음 $replaceAll 작업은 name 필드 에 있는 "Cafe" 의 모든 인스턴스를 찾아서 바꾸려고 시도합니다.

db.restaurants.aggregate( [
{
$addFields:
{
resultObject: {
$replaceOne: {
input: "$name",
find: "Cafe",
replacement: "CAFE"
}
}
}
}
] )
{ "_id" : 1, "name" : "cafe", "resultObject" : "cafe" }
{ "_id" : 2, "name" : "Cafe", "resultObject" : "CAFE" }
{ "_id" : 3, "name" : "café", "resultObject" : "café" }

$replaceAll이 컬렉션 에 대해 구성된 데이터 정렬을 무시하므로 이 작업 인스턴스 "Cafe" 문서 에서:2

{ _id: 1, name: "cafe", resultObject: "cafe" }
{ _id: 2, name: "Cafe", resultObject: "CAFE" }
{ _id: 3, name: "café", resultObject: "café" }

$match 와 같이 데이터 정렬을 존중하는 연산자는 이 컬렉션의 데이터 정렬 강도가 1이므로 "Cafe" 에 대해 문자열 비교를 수행할 때 세 문서 모두와 일치합니다.

$replaceAll 집계 표현식 유니코드 정규화를 수행하지 않습니다. 즉, 모든 표현식에 대한 $replaceAll 문자열 일치는 일치를 시도할 때 유니코드로 문자를 나타내는 데 사용되는 코드 점의 수를 고려합니다.

예를 들어 문자 é은(는) 한 개 또는 두 개의 코드 점을 사용하여 유니코드로 표현할 수 있습니다.

Unicode
다음과 같이 표시됩니다.
코드 포인트

\xe9

é

1 ( \xe9 )

e\u0301

é

2 ( e + \u0301 )

문자 가 하나의 코드 점 있는 유니코드로 표시되는 찾기 문자열과 $replaceAll 함께 를 사용하면 é é 입력 문자열에 두 개의 코드 점을 사용하는 의 인스턴스 와 일치하지 않습니다.

다음 표는 "café"의 찾기 문자열에 대해 일치 항목이 발생하는지 여부를 é 보여줍니다. 가 하나 또는 두 개의 코드 점 로 표시되는 입력 문자열과 비교할 때 이 예시 의 찾기 문자열은 하나의 코드 점 사용하여 é 문자를 나타냅니다.

예시
match

{ $replaceAll: { input: "caf\xe9", find: "café", replacement: "CAFE" } }

{ $replaceAll: { input: "cafe\u0301", find: "café", replacement: "CAFE" } }

no

$replaceAll 유니코드 정규화를 수행하지 않기 때문에 첫 번째 문자열 비교만 일치하며, 여기서 찾기 문자열과 입력 문자열은 모두 하나의 코드 점 사용하여 를 나타냅니다.é

다음 문서로 inventory collection을 생성합니다.

db.inventory.insertMany( [
{ _id: 1, item: "blue paint" },
{ _id: 2, item: "blue and green paint" },
{ _id: 3, item: "blue paint with blue paintbrush" },
{ _id: 4, item: "blue paint with green paintbrush" },
] )

다음 예시에서는 item 필드에 있는 'blue paint'의 각 인스턴스를 'red paint'로 바꿉니다.

db.inventory.aggregate([
{
$project:
{
item: { $replaceAll: { input: "$item", find: "blue paint", replacement: "red paint" } }
}
}
])

이 연산은 다음과 같은 결과를 반환합니다.

{ _id: 1, item: "red paint" }
{ _id: 2, item: "blue and green paint" }
{ _id: 3, item: "red paint with red paintbrush" }
{ _id: 4, item: "red paint with green paintbrush" }

다음 예시 정규식 패턴 \\bblue paint\\b 을 사용하여 item 필드 에서 'blue paint'라는 전체 구문과 일치하는 각 인스턴스 'red paint'로 바꿉니다.

db.inventory.aggregate([
{
$project:
{
item: { $replaceAll: { input: "$item", find: \\bblue paint\\b, replacement: "red paint" } }
}
}
])

이 연산은 다음과 같은 결과를 반환합니다.

{ _id: 1, item: "red paint" }
{ _id: 2, item: "blue and green paint" }
{ _id: 3, item: "red paint with blue paintbrush" }
{ _id: 4, item: "red paint with green paintbrush" }

이 경우 "파란색 페인트"는 정규식 단어 경계(\b)를 사용하기 때문에 전체 구문으로 나타나는 경우에만 대체되고, 더 큰 단어 내의 하위 문자열인 경우에는 대체되지 않습니다.

이 페이지 평가하기

이 페이지의 내용