Usługa Azure Cosmos DB dla bazy danych MongoDB (wersja 3.6): 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.
Uwaga
Wersja 3.6 usługi Azure Cosmos DB dla bazy danych MongoDB nie ma bieżących planów zakończenia życia (EOL). Minimalne powiadomienie dla przyszłego EOL wynosi trzy lata.
Obsługa protokołu
Usługa Azure Cosmos DB dla bazy danych MongoDB jest domyślnie zgodna z serwerem MongoDB w wersji 3.6 dla nowych kont. 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 interfejsu API usługi Azure Cosmos DB dla kont bazy danych MongoDB wersja 3.6 konta ma punkt końcowy w formacie *.mongo.cosmos.azure.com , natomiast konto w wersji 3.2 ma punkt końcowy w formacie *.documents.azure.com.
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. W poniższych sekcjach przedstawiono szczegółową listę operacji serwera, operatorów, etapów, poleceń i opcji obecnie obsługiwanych przez usługę Azure Cosmos DB.
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.
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
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
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
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 dołączenia $ 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 | paska działa jako funkcja "or" — zapytanie find({x:{$regex: /^abc |^def/}) pasuje do dokumentów, w których pole x ma wartości rozpoczynają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 operacje sortowania w jednym polu są obsługiwane, ale operacje sortowania w wielu polach nie są obsługiwane.
Usługa Azure Cosmos DB obsługuje system plików GridFS za pomocą dowolnego sterownika MongoDB 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
Usługa Azure Cosmos DB nie obsługuje jeszcze operacji zapisu z możliwością ponawiania prób. Sterowniki klienta muszą zostać dodane retryWrites=false do ich parametry połączenia.
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.
Zarządzanie użytkownikami i rolami
Usługa Azure Cosmos DB nie obsługuje jeszcze użytkowników i ról. Obsługuje jednak kontrolę dostępu opartą na rolach platformy Azure (Azure RBAC) oraz hasła lub klucze tylko do odczytu i zapisu, które można uzyskać za pośrednictwem okienka parametry połączenia w witrynie Azure Portal.
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 obsługi replikacji przez usługę Azure Cosmos DB wszystkie zapisy są domyślnie automatycznie większościowe kworum podczas korzystania z silnej spójności. Ustawienia Write Concern określone w kodzie klienta są ignorowane. Aby dowiedzieć się więcej, zobacz Artykuł Używanie poziomów spójności w celu zmaksymalizowania dostępności i wydajności .