Usługa Azure Cosmos DB dla bazy danych MongoDB (wersja serwera 4.0): obsługiwane funkcje i składnia
Artykuł
DOTYCZY: MongoDB
Azure Cosmos DB to dystrybuowana globalnie, wielomodelowa usługa bazy danych udostępniana przez Microsoft. Możesz komunikować się z usługą Azure Cosmos DB dla bazy danych MongoDB przy użyciu dowolnego sterownika klienta bazy danych MongoDB typu open source. Usługa Azure Cosmos DB dla bazy danych MongoDB umożliwia korzystanie z istniejących sterowników klienta przez przestrzeganie protokołu przewodowego bazy danych MongoDB.
Korzystając z usługi Azure Cosmos DB dla bazy danych MongoDB, możesz korzystać z zalet bazy danych MongoDB, z których korzystasz, ze wszystkimi możliwościami przedsiębiorstwa zapewnianymi przez usługę Azure Cosmos DB: globalną dystrybucję, automatyczne fragmentowanie, gwarancje dostępności i opóźnienia, szyfrowanie magazynowane, kopie zapasowe i wiele innych.
Obsługa protokołu
Poniżej wymieniono obsługiwane operacje wraz z ewentualnymi ograniczeniami lub wyjątkami. Każdy sterownik klienta, który rozumie te protokoły, powinien mieć możliwość nawiązania połączenia z usługą Azure Cosmos DB dla bazy danych MongoDB. Podczas tworzenia kont usługi Azure Cosmos DB dla bazy danych MongoDB wersje 3.6 lub nowsze mają punkt końcowy w formacie *.mongo.cosmos.azure.com , natomiast konta w wersji 3.2 mają punkt końcowy w formacie *.documents.azure.com.
Uwaga
W tym artykule wymieniono tylko obsługiwane polecenia serwera i wyklucza funkcje otoki po stronie klienta. Funkcje otoki po stronie klienta, takie jak deleteMany() i wewnętrznie używają delete() poleceń i update()updateMany() serwera. Funkcje korzystające z obsługiwanych poleceń serwera są zgodne z usługą Azure Cosmos DB dla bazy danych MongoDB.
Obsługa języka zapytań
Usługa Azure Cosmos DB dla bazy danych MongoDB zapewnia kompleksową obsługę konstrukcji języka zapytań bazy danych MongoDB. Poniżej znajduje się szczegółowa lista aktualnie obsługiwanych operacji, operatorów, etapów, poleceń i opcji.
Polecenia bazy danych
Usługa Azure Cosmos DB dla bazy danych MongoDB obsługuje następujące polecenia bazy danych:
$lookupnie obsługuje jeszcze niekorzystywanej funkcji podzapytania wprowadzonej w wersji 3.6 serwera. Jeśli spróbujesz użyć $lookup operatora z polami let ipipeline, zostanie wyświetlony błąd z komunikatem zawierającym let is not supported komunikat.
Wyrażenia logiczne
Polecenie
Obsługiwane
and
Tak
not
Tak
or
Tak
Wyrażenia konwersji
Polecenie
Obsługiwane
convert
Tak
toBool
Tak
toDate
Tak
toDecimal
Tak
toDouble
Tak
toInt
Tak
toLong
Tak
toObjectId
Tak
toString
Tak
Stałe wyrażenia
Polecenie
Obsługiwane
setEquals
Tak
setIntersection
Tak
setUnion
Tak
setDifference
Tak
setIsSubset
Tak
anyElementTrue
Tak
allElementsTrue
Tak
Wyrażenia porównania
Uwaga
Interfejs API dla bazy danych MongoDB nie obsługuje wyrażeń porównania z literałem tablicy w zapytaniu.
Polecenie
Obsługiwane
cmp
Tak
eq
Tak
gt
Tak
gte
Tak
lt
Tak
lte
Tak
ne
Tak
in
Tak
nin
Tak
Wyrażenia arytmetyczne
Polecenie
Obsługiwane
abs
Tak
add
Tak
ceil
Tak
divide
Tak
exp
Tak
floor
Tak
ln
Tak
log
Tak
log10
Tak
mod
Tak
multiply
Tak
pow
Tak
sqrt
Tak
subtract
Tak
trunc
Tak
Wyrażenia ciągu
Polecenie
Obsługiwane
concat
Tak
indexOfBytes
Tak
indexOfCP
Tak
ltrim
Tak
rtrim
Tak
trim
Tak
split
Tak
strLenBytes
Tak
strLenCP
Tak
strcasecmp
Tak
substr
Tak
substrBytes
Tak
substrCP
Tak
toLower
Tak
toUpper
Tak
Operator wyszukiwania tekstu
Polecenie
Obsługiwane
meta
Nie.
Wyrażenia tablicy
Polecenie
Obsługiwane
arrayElemAt
Tak
arrayToObject
Tak
concatArrays
Tak
filter
Tak
indexOfArray
Tak
isArray
Tak
objectToArray
Tak
range
Tak
reverseArray
Tak
reduce
Tak
size
Tak
slice
Tak
zip
Tak
in
Tak
Operatory zmiennych
Polecenie
Obsługiwane
map
Tak
let
Tak
Zmienne systemowe
Polecenie
Obsługiwane
$$CURRENT
Tak
$$DESCEND
Tak
$$KEEP
Tak
$$PRUNE
Tak
$$REMOVE
Tak
$$ROOT
Tak
Operator literału
Polecenie
Obsługiwane
literal
Tak
Wyrażenia daty
Polecenie
Obsługiwane
dayOfYear
Tak
dayOfMonth
Tak
dayOfWeek
Tak
year
Tak
month
Tak
week
Tak
hour
Tak
minute
Tak
second
Tak
millisecond
Tak
dateToString
Tak
isoDayOfWeek
Tak
isoWeek
Tak
dateFromParts
Tak
dateToParts
Tak
dateFromString
Tak
isoWeekYear
Tak
Wyrażenia warunkowe
Polecenie
Obsługiwane
cond
Tak
ifNull
Tak
switch
Tak
Operator typu danych
Polecenie
Obsługiwane
type
Tak
Wyrażenia akumulatorowe
Polecenie
Obsługiwane
sum
Tak
avg
Tak
first
Tak
last
Tak
max
Tak
min
Tak
push
Tak
addToSet
Tak
stdDevPop
Tak
stdDevSamp
Tak
Operator scalania
Polecenie
Obsługiwane
mergeObjects
Tak
Typy danych
Usługa Azure Cosmos DB dla bazy danych MongoDB obsługuje dokumenty zakodowane w formacie BSON bazy danych MongoDB. Wersja interfejsu API w wersji 4.0 zwiększa wewnętrzne użycie tego formatu, aby zwiększyć wydajność i obniżyć koszty. Dokumenty zapisywane lub aktualizowane za pośrednictwem punktu końcowego z systemem 4.0 lub nowszym korzystają z optymalizacji.
W scenariuszu uaktualniania dokumenty napisane przed uaktualnieniem do wersji 4.0 lub nowszej nie będą korzystać z zwiększonej wydajności, dopóki nie zostaną zaktualizowane za pośrednictwem operacji zapisu za pośrednictwem punktu końcowego w wersji 4.0 lub nowszej.
Funkcja obsługi dokumentów do 16 MB zwiększa limit rozmiaru dokumentów z 2 do 16 MB. Ten limit dotyczy tylko kolekcji utworzonych po włączeniu tej funkcji. Po włączeniu tej funkcji na koncie bazy danych nie można jej wyłączyć.
Włączenie 16 MB można wykonać na karcie funkcji w witrynie Azure Portal lub programowo, dodając funkcję "EnableMongo16MBDocumentSupport".
Zalecamy włączenie ponawiania po stronie serwera i unikanie indeksów wieloznacznych w celu zapewnienia pomyślnego działania żądań z większymi dokumentami. W razie potrzeby podniesienie jednostek RU bazy danych/kolekcji może również pomóc w wydajności.
Polecenie
Obsługiwane
Double
Tak
String
Tak
Object
Tak
Array
Tak
Binary Data
Tak
ObjectId
Tak
Boolean
Tak
Date
Tak
Null
Tak
32-bit Integer (int)
Tak
Timestamp
Tak
64-bit Integer (long)
Tak
MinKey
Tak
MaxKey
Tak
Decimal128
Tak
Regular Expression
Tak
JavaScript
Tak
JavaScript (with scope)
Tak
Undefined
Tak
Indeksy i właściwości indeksu
Indeksy
Polecenie
Obsługiwane
Single Field Index
Tak
Compound Index
Tak
Multikey Index
Tak
Text Index
Nie
2dsphere
Tak
2d Index
Nie.
Hashed Index
Nie.
Właściwości indeksu
Polecenie
Obsługiwane
TTL
Tak
Unique
Tak
Partial
Nie.
Case Insensitive
Nie.
Sparse
Nie.
Background
Tak
Operatory
Operatory logiczne
Polecenie
Obsługiwane
or
Tak
and
Tak
not
Tak
nor
Tak
Operatory elementów
Polecenie
Obsługiwane
exists
Tak
type
Tak
Operatory zapytań oceny
Polecenie
Obsługiwane
expr
Tak
jsonSchema
Nie
mod
Tak
regex
Tak
text
Nie (nieobsługiwane). Zamiast tego użyj $regex).
where
Nie.
W zapytaniach $regex wyrażenia zakotwiczone po lewej stronie zezwalają na wyszukiwanie indeksów. Jednak użycie modyfikatora „i” (wielkość liter nie ma znaczenia) oraz modyfikatora „m” (wiele wierszy) powoduje skanowanie kolekcji we wszystkich wyrażeniach.
Jeśli istnieje potrzeba uwzględnienia ciągu "$" lub "|", najlepiej utworzyć dwa (lub więcej) zapytań wyrażeń regularnych. Na przykład, biorąc pod uwagę następujące oryginalne zapytanie: find({x:{$regex: /^abc$/}), musi zostać zmodyfikowany w następujący sposób:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
Pierwsza część użyje indeksu, aby ograniczyć wyszukiwanie do dokumentów, które rozpoczynają się od ^abc, a druga część będzie dokładnie dopasowywana do wpisów. Operator kreski „|” działa jako funkcja „or” — zapytanie find({x:{$regex: /^abc |^def/}) pasuje do dokumentów, w których pole „x” ma wartości zaczynające się od „abc” lub „def”. Aby korzystać z indeksu, zaleca się podzielenie zapytania na dwa różne zapytania połączone operatorem $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Operatory tablicy
Polecenie
Obsługiwane
all
Tak
elemMatch
Tak
size
Tak
Operator komentarza
Polecenie
Obsługiwane
comment
Tak
Operatory projekcji
Polecenie
Obsługiwane
elemMatch
Tak
meta
Nie
slice
Tak
Operatory aktualizacji
Operatory do aktualizacji pól
Polecenie
Obsługiwane
inc
Tak
mul
Tak
rename
Tak
setOnInsert
Tak
set
Tak
unset
Tak
min
Tak
max
Tak
currentDate
Tak
Operatory do aktualizacji tablic
Polecenie
Obsługiwane
$
Tak
$[]
Tak
$[\<identifier\>]
Tak
addToSet
Tak
pop
Tak
pullAll
Tak
pull
Tak
push
Tak
pushAll
Tak
Modyfikatory aktualizacji
Polecenie
Obsługiwane
each
Tak
slice
Tak
sort
Tak
position
Tak
Operator do aktualizacji Bitwise
Polecenie
Obsługiwane
bit
Tak
bitsAllSet
Nie.
bitsAnySet
Nie.
bitsAllClear
Nie.
bitsAnyClear
Nie.
Operatory danych geoprzestrzennych
Operator
Obsługiwane
$geoWithin
Tak
$geoIntersects
Tak
$near
Tak
$nearSphere
Tak
$geometry
Tak
$minDistance
Tak
$maxDistance
Tak
$center
Nie.
$centerSphere
Nie.
$box
Nie.
$polygon
Nie.
Operacje sortowania
W przypadku korzystania z findOneAndUpdate operacji z interfejsem API dla bazy danych MongoDB w wersji 4.0 operacje sortowania w jednym polu i wielu polach są obsługiwane. Operacje sortowania na wielu polach były ograniczeniem poprzednich protokołów przewodowych.
Usługa Azure Cosmos DB obsługuje system plików GridFS za pomocą dowolnego sterownika Mongo zgodnego z systemem Plików GridFS.
Replikacja
Usługa Azure Cosmos DB obsługuje automatyczną, natywną replikację na najniższych warstwach. Ta logika została rozszerzona, aby osiągnąć małe opóźnienia oraz replikację globalną. Usługa Azure Cosmos DB nie obsługuje poleceń replikacji ręcznej.
Operacje zapisu z możliwością ponawiania prób
Operacje zapisu z możliwością ponawiania prób umożliwiają sterownikom bazy danych MongoDB automatyczne ponawianie prób niektórych operacji zapisu w przypadku awarii, ale skutkuje bardziej rygorystycznymi wymaganiami dotyczącymi niektórych operacji, które są zgodne z wymaganiami protokołu MongoDB. Po włączeniu tej funkcji operacje aktualizacji, w tym usunięcia, w kolekcjach podzielonych na fragmenty będą wymagały dołączenie klucza fragmentu do instrukcji filtru zapytania lub aktualizacji.
Na przykład w przypadku kolekcji podzielonej na fragmenty fragmentowane w kluczu "country": aby usunąć wszystkie dokumenty z miastem = "NYC" pól, aplikacja będzie musiała wykonać operację dla wszystkich wartości klucza fragmentu (kraju), jeśli włączono operację Zapisu z możliwością ponawiania prób.
db.coll.deleteMany({"country": "USA", "city": "NYC"}) - Sukces
db.coll.deleteMany({"city": "NYC"}) — Kończy się niepowodzeniem z powodu błędu ShardKeyNotFound(61)
Uwaga
Operacje zapisu z możliwością ponawiania nie obsługują obecnie operacji zapisu nieurządkowanego zbiorczo. Jeśli chcesz wykonać operacje zapisu zbiorczego z włączonymi operacjami zapisu z możliwością ponawiania prób, wykonaj operacje zapisu uporządkowane zbiorczo.
Aby włączyć tę funkcję, dodaj do konta bazy danych funkcję EnableMongoRetryableWrites. Tę funkcję można również włączyć na karcie funkcje w witrynie Azure Portal.
Dzielenie na fragmenty
Usługa Azure Cosmos DB obsługuje automatyczne dzielenie na fragmenty po stronie serwera. Automatycznie zarządza tworzeniem, umieszczaniem i równoważeniem fragmentów. Usługa Azure Cosmos DB nie obsługuje ręcznych poleceń fragmentowania, co oznacza, że nie trzeba wywoływać poleceń, takich jak addShard, balancerStart, moveChunk itp. Wystarczy określić klucz fragmentu podczas tworzenia kontenerów lub wykonywania zapytań dotyczących danych.
Sesje
Usługa Azure Cosmos DB nie obsługuje jeszcze poleceń sesji po stronie serwera.
Czas wygaśnięcia (TTL)
Usługa Azure Cosmos DB obsługuje czas wygaśnięcia (TTL) na podstawie sygnatury czasowej dokumentu. Czas wygaśnięcia można włączyć dla kolekcji w witrynie Azure Portal.
Transakcje
Transakcje obejmujące wiele dokumentów są obsługiwane w kolekcji bez fragmentowania. Transakcje obejmujące wiele dokumentów nie są obsługiwane w kolekcjach ani w kolekcjach podzielonych na fragmenty. Limit czasu transakcji jest stały 5 sekund.
Zarządzanie użytkownikami i rolami
Usługa Azure Cosmos DB nie obsługuje jeszcze użytkowników i ról. Jednak usługa Azure Cosmos DB obsługuje kontrolę dostępu opartą na rolach (RBAC) platformy Azure oraz hasła/klucze tylko do odczytu i zapisu, które można uzyskać za pośrednictwem witryny Azure Portal (strona Parametry połączenia).
Ustawienie Write Concern
Niektóre aplikacje korzystają z problemu zapisu, który określa liczbę odpowiedzi wymaganych podczas operacji zapisu. Ze względu na sposób, w jaki usługa Azure Cosmos DB obsługuje replikację w tle, wszystkie zapisy są domyślnie automatycznie kworum. Ustawienia Write Concern określone w kodzie klienta są ignorowane. Aby dowiedzieć się więcej, zobacz Maksymalizowanie dostępności i wydajności za pomocą poziomów spójności.
Następne kroki
Dowiedz się, jak używać programu Studio 3T z usługą Azure Cosmos DB dla bazy danych MongoDB.
Dowiedz się, jak używać narzędzia Robo 3T z usługą Azure Cosmos DB dla bazy danych MongoDB.
Zapoznaj się z przykładami bazy danych MongoDB za pomocą usługi Azure Cosmos DB dla bazy danych MongoDB.
Próbujesz zaplanować pojemność migracji do usługi Azure Cosmos DB? Informacje o istniejącym klastrze bazy danych można użyć do planowania pojemności.