Docs Menu
Docs Home
/ /

마침표 및 달러 기호가 포함된 필드 이름

필드 이름에 달러 기호($)나 마침표(.)를 사용하지 마세요. MongoDB 필드 이름에 이러한 문자를 사용하는 문서를 저장하지만 다음과 같은 이유로 사용하지 않는 것을 권장합니다.

  • 쿼리 성능. 이러한 필드는 인덱스 할 수 없으므로 쿼리 효율성이 떨어질 수 있습니다. 이러한 필드에서 사용할 수 없는 다른 기능을 학습 보려면 일반 제한을 참조하세요.

  • 쿼리 가능성. 이러한 필드는 직접 쿼리 할 수 없습니다. 이를 읽거나 $getField 수정하려면, $setField 및 와 같은 헬퍼 $literal 메서드가 필요합니다. 이러한 헬퍼가 없으면 MongoDB 마침표가 포함된 필드 이름을 포함된 필드 의 경로로 해석합니다.

필드 이름 유효성 검사 규칙은 모든 유형의 스토리지 작업에 대해 동일하지 않습니다.

달러($)로 시작하는 필드 이름이나 마침표(.)가 포함된 필드 이름을 사용할 때에는 몇 가지 일반적인 제한 사항이 있습니다. 이러한 필드는 다음과 같은 경우에 사용할 수 없습니다.

  • 인덱스 생성

  • 샤드 키의 일부로 사용

  • (으)로 유효성을 검사 $jsonSchema

  • 이스케이프 시퀀스를 사용한 수정

  • 필드 레벨 암호화와 함께 사용

  • _id 문서에서 하위 필드로 사용

  • 필드 이름에 마침표로 구분된 단어가 255 개 이상 포함된 경우

  • ($-접두사만 해당) 필드 이름이 MongoDB 내부 문서 메타데이터 용으로 보유하는 필드 이름과 충돌하는 경우 문서 의 루트 수준에서 의존

MongoDB 내부 문서 메타데이터 위해 $접두사가 붙은 필드 이름 설정하다 를 예약합니다. 데이터의 루트 수준 필드 이름이 예약된 이름 중 하나와 충돌하는 경우, MongoDB 필드 보존하거나 쿼리에 반환하지 않을 수 있으며, 경우에 따라 결과에서 해당 필드 제거합니다. 이러한 예약된 이름은 내부용이며 릴리스 간에 변경될 수 있으므로 루트 수준의 $접두사가 붙은 필드 이름에 데이터를 저장 하거나 다시 읽을 수 있다고 의존하지 마세요.

경고

달러 기호($) 및 마침표(.)로 인한 데이터 손실 가능성

달러($) 접두사가 붙은 필드 이름 또는 마침표(.)가 포함된 필드 이름을 사용할 때 MongoDB 5.0 이전 서버에서 이러한 필드 이름이 승인되지 않은 쓰기(쓰기 고려 w=0)와 함께 사용되는 경우 데이터가 손실될 가능성이 적습니다.

insert, updatefindAndModify 명령을 실행할 때 5.0 호환 드라이버는 필드 이름 앞에 달러($)가 붙거나 마침표(.)가 포함된 문서 사용에 대한 제한을 제거합니다. 이러한 필드 이름은 이전 드라이버 버전에서 클라이언트 사이드 오류를 발생시켰습니다.

드라이버가 연결된 서버 버전에 관계없이 제한이 제거됩니다. 5.0 드라이버가 이전 서버로 문서를 보내는 경우 오류를 보내지 않고 문서가 거부됩니다.

경고

달러 기호($) 및 마침표(.)를 사용한 가져오기 및 내보내기 관련 문제

MongoDB 5.0부터는 문서 필드 이름에 달러($) 접두사를 붙일 수 있으며 마침표(.)를 포함할 수 있습니다. 그러나 mongoimportmongoexport는 이러한 문자를 사용하는 필드 이름이 있는 일부 상황에서 예상대로 작동하지 않을 수 있습니다.

MongoDB 확장 JSON v2는 유형 래퍼와 유형 래퍼와 이름이 같은 필드를 구분할 수 없습니다. 해당 BSON 표현에 달러($) 접두사가 붙은 키가 포함될 수 있는 상황에서는 확장 JSON 형식을 사용하지 않도록 합니다. DBRef 메커니즘에는 해당 일반 규칙이 적용되지 않습니다.

필드 이름에 마침표(.)가 있는 mongoimportmongoexport를 사용하는 것에도 제한 사항이 있습니다. CSV 파일은 마침표(.)를 사용하여 데이터 계층 구조를 나타내므로 필드 이름에 마침표(.)가 있으면 중첩 수준으로 잘못 해석될 수 있습니다.

마침표와 달러 기호가 포함된 필드 이름을 처리하는 방법에 대한 예는 다음 페이지를 참조하세요.

돌아가기

분산된 쿼리

이 페이지의 내용