Dotyczy tylko wersji Cloud Firestore Enterprise. |
Na tej stronie opisujemy różnice w działaniu między Cloud Firestore w trybie zgodności z MongoDB a MongoDB.
Szczegółowe informacje o obsługiwanych funkcjach w zależności od wersji MongoDB znajdziesz w tych artykułach:
Połączenia i bazy danych
- Każde połączenie jest ograniczone do jednej bazy danych Cloud Firestore w trybie zgodności z MongoDB.
- Zanim połączysz się z bazą danych, musisz ją utworzyć.
Nazwa
W przypadku nazywania części modelu danych obowiązują te różnice:
Kolekcje
- Nazwy kolekcji pasujące do wzorca
__.*__
nie są obsługiwane.
Pola
- Nazwy pól pasujące do
__.*__
nie są obsługiwane. - Puste nazwy pól nie są obsługiwane.
Dokumenty
- Maksymalny rozmiar dokumentu to 4 MiB.
- Maksymalna głębokość umieszczania pól to 20. Każde pole typu Array i Object dodaje jeden poziom do ogólnej głębokości.
_id
- Dokument
_id
(pole najwyższego poziomu) musi być identyfikatorem ObjectId, ciągiem znaków lub 64-bitową liczbą całkowitą. Inne typy BSON nie są obsługiwane. - Pusty ciąg znaków („”) i 64-bitowa wartość 0 (0L) nie są obsługiwane.
Wartości
- Typy BSON JavaScript, Symbol, DBPointer i Undefined nie są obsługiwane.
Data
- Wartości daty muszą mieścić się w zakresie
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
.
Decimal128
- Wartości
NaN
, nieskończoność dodatnia i nieskończoność ujemna są kanonizowane podczas zapisu. - Operacje arytmetyczne na typie Decimal128 nie są obsługiwane.
Liczba zmiennoprzecinkowa
- Wartości
NaN
są kanonizowane podczas zapisu.
Wyrażenie regularne
- Opcje wyrażenia regularnego muszą być prawidłowe („i”, „m”, „s”, „u” lub „x”) i podane w kolejności alfabetycznej bez powtórzeń.
Zapytania
- Naturalny porządek sortowania (zapytania bez jawnego sortowania) nie pasuje do kolejności wstawiania ani do kolejności sortowania według kolumny
_id
w kolejności rosnącej.
Agregacje
- Agregacje są ograniczone do 250 etapów.
- Etapy
$merge
i$out
nie są obsługiwane. Pełną listę obsługiwanych etapów i operatorów znajdziesz w sekcji polecenia. - Etap
$lookup
jest ograniczony do określeniaforeignField
na urządzeniu_id
.
Zapisy
- Dokumentów, których nazwy zaczynają się od znaku dolara („$”), nie można tworzyć za pomocą funkcji wstawiania lub aktualizowania w
update
anifindAndModify
. - Upewnij się, że ciąg połączenia zawiera
retryWrites=false
(lub użyj metody odpowiedniej dla Twojego sterownika), aby sterownik nie próbował używać tej funkcji. Ponawialne zapisy nie są obsługiwane.
Transakcje
Obsługiwane są izolacja zrzutu i transakcje serializowalne.
Domyślnie transakcje korzystają z optymistycznej kontroli współbieżności z izolacją migawek.
Odczytywanie problemu
Cloud Firestore w trybie zgodności z MongoDB obsługuje poziomy odczytu
snapshot
,majority
ilinearizable
. Wartość domyślna tosnapshot
, co oznacza izolację zrzutu.Używaj
linearizable
, gdy aplikacja wymaga ścisłej spójności i musi zapobiegać anomaliom związanym z niezgodnością zapisu. W przypadku innych obciążeńsnapshot
może zwiększyć wydajność i zmniejszyć rywalizację o transakcje.
Zapisywanie obaw
- Obsługiwane są tylko poziomy zapisu
w: 'majority'
iw: 1
.
Ustawienia czytania
- Obsługiwane są tylko poziomy odczytu
primary
,primaryPreferred
,primary_preferred
,secondary_preferred
inearest
.
Indeksy
- Indeksy wieloznaczne nie są obsługiwane.
- Cloud Firestore w trybie zgodności z MongoDB nie tworzy automatycznie indeksu w polu
_id
, ale zapewnia, że wartości w polu_id
są unikalne w kolekcji. - Indeksy bez włączonej obsługi wielu kluczy nie są automatycznie zmieniane na indeksy z obsługą wielu kluczy na podstawie operacji zapisu. Obsługę wielu kluczy musisz włączyć podczas tworzenia indeksu. Nie można zmienić tej opcji.
Błędy
- Kody błędów i komunikaty o błędach mogą się różnić w przypadku Cloud Firestore w trybie zgodności z MongoDB i MongoDB.
Polecenia
W przypadku niektórych poleceń występują te różnice w działaniu.
- Polecenia, których nie ma w tabelach poniżej, nie są obsługiwane.
maxTimeMS
jest akceptowane przez większość poleceń, ale może być ignorowane.
Zapytania i zapisy
Command | Nieobsługiwane pola |
---|---|
|
|
|
|
|
|
|
|
|
W instrukcji usuwania:
|
|
|
|
|
|
|
|
|
|
(brak) |
Transakcje i sesje
Command | Nieobsługiwane pola |
---|---|
|
|
|
|
|
(brak) |
Administracja
Command | Nieobsługiwane pola | Notes |
---|---|---|
|
|
Jeśli podasz wartość, pole filter musi być puste. |
|
|
Jeśli podano wartość, authorizedCollections musi mieć wartość false. |
|
|
|
|
|
To polecenie nie wykonuje żadnej operacji.capped musi mieć wartość false, jeśli jest podane. |
Co dalej?
- Wykonaj czynności opisane w artykule Krótkie wprowadzenie: tworzenie bazy danych i łączenie się z nią.
- Pełną listę obsługiwanych funkcji znajdziesz w artykule Obsługiwane typy danych, sterowniki i funkcje MongoDB.