동작 차이
이 페이지에서는 MongoDB 호환 Firestore와 MongoDB의 동작 차이를 설명합니다.MongoDB 버전에 따라 지원되는 기능의 세부정보는 다음을 참고하세요.
연결 및 데이터베이스
- 각 연결은 MongoDB 호환성을 갖춘 단일 Firestore 데이터베이스로 제한됩니다.
- 데이터베이스를 연결하기 전에 만들어야 합니다.
이름 지정
데이터 모델의 일부 이름 지정에는 다음과 같은 차이점이 적용됩니다.
컬렉션
__.*__
와 일치하는 컬렉션 이름은 지원되지 않습니다.
필드
__.*__
와 일치하는 필드 이름은 지원되지 않습니다.- 빈 필드 이름은 지원되지 않습니다.
문서
- 최대 문서 크기는 4MiB입니다.
- 필드의 최대 중첩 깊이는 20입니다. 각 배열 및 객체 유형 필드는 전체 심도에 1단계를 추가합니다.
_id
- 문서
_id
(최상위 필드)는 ObjectId, 문자열 또는 64비트 정수여야 합니다. 다른 BSON 유형은 지원되지 않습니다. - 빈 문자열 ("") 및 64비트 0 (0L)은 지원되지 않습니다.
값
- JavaScript, Symbol, DBPointer, Undefined BSON 유형은 지원되지 않습니다.
날짜
- 날짜 값은
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
범위에 있어야 합니다.
Decimal128
NaN
, 양의 무한대, 음의 무한대 값은 쓰기 시 정규화됩니다.- Decimal128에 대한 산술 연산은 지원되지 않습니다.
Double
NaN
값은 쓰기 시 정규화됩니다.
정규 표현식
- 정규 표현식 옵션은 유효해야 하며 ('i', 'm', 's', 'u' 또는 'x') 반복 없이 알파벳순으로 제공되어야 합니다.
쿼리
- 자연 정렬 순서 (명시적 정렬이 없는 쿼리)가 삽입 순서 또는
_id
오름차순 정렬 순서와 일치하지 않습니다.
집계
- 집계는 250단계로 제한됩니다.
$merge
및$out
단계는 지원되지 않습니다. 지원되는 단계 및 연산자의 전체 목록은 명령어 섹션을 참고하세요.
쓰기
- 이름이 달러 기호 ('$')로 시작하는 문서는
update
또는findAndModify
의 upsert 기능을 사용하여 만들 수 없습니다. - 연결 문자열에
retryWrites=false
가 포함되어 있는지 확인하거나 드라이버에 적절한 메서드를 사용하여 드라이버가 이 기능을 사용하지 않도록 합니다. 재시도 가능한 쓰기는 지원되지 않습니다.
거래
- 스냅샷 거래는 지원되지 않습니다.
- 트랜잭션은 잠금과 함께 비관적 동시 실행 제어를 사용합니다. 잠금 경합을 방지하려면 트랜잭션에서 읽는 데이터의 양을 제한합니다.
색인
- 와일드 카드 색인은 지원되지 않습니다.
- 고유 색인은 지원되지 않습니다.
- MongoDB 호환 Firestore는
_id
에 색인을 자동으로 만들지 않지만_id
값이 컬렉션 내에서 고유한지 확인합니다. - 다중 키가 사용 설정되지 않은 색인은 쓰기 작업에 따라 다중 키 색인으로 자동 변경되지 않습니다. 색인을 만들 때 다중 키를 사용 설정해야 하며 이 옵션은 변경할 수 없습니다.
우려사항 읽기
majority
읽기 우려 수준만 지원됩니다.
우려사항 작성
w: 'majority'
및w: 1
쓰기 문제만 지원됩니다.
환경설정 읽기
primary
,primaryPreferred
,primary_preferred
,secondary_preferred
,nearest
읽기 문제만 지원됩니다.
오류
- MongoDB 호환 Firestore와 MongoDB의 오류 코드 및 메시지는 다를 수 있습니다.
명령어
다음 동작 차이는 특정 명령어에 적용됩니다.
- 다음 표에 나열되지 않은 명령어는 지원되지 않습니다.
maxTimeMS
는 대부분의 명령어에서 허용되지만 무시될 수도 있습니다.
쿼리 및 쓰기
명령어 | 지원되지 않는 필드 |
---|---|
|
|
|
|
|
|
|
|
|
삭제 문에 포함된 경우:
|
|
|
|
|
|
|
|
|
|
(없음) |
거래 및 세션
명령어 | 지원되지 않는 필드 |
---|---|
|
|
|
|
|
(없음) |
관리
명령어 | 지원되지 않는 필드 | 참고 |
---|---|---|
|
|
filter 가 제공된 경우 비어 있어야 합니다. |
|
|
authorizedCollections 가 제공된 경우 false여야 합니다. |
|
|
|
|
|
이 명령어는 무작위 작업입니다.capped 가 제공된 경우 false여야 합니다. |
다음 단계
- 빠른 시작: 데이터베이스 만들기 및 연결을 실행합니다.
- 지원되는 기능의 전체 목록은 지원되는 MongoDB 데이터 유형, 드라이버, 기능을 참고하세요.