Udostępnij za pośrednictwem


Usługa Azure Cosmos DB dla bazy danych MongoDB (wersja serwera 4.0): obsługiwane funkcje i składnia

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:

Polecenia operacji zapytań i zapisu

Polecenie Obsługiwane
change streams Tak
delete Tak
eval Nie
find Tak
findAndModify Tak
getLastError Tak
getMore Tak
getPrevError Nie
insert Tak
parallelCollectionScan Nie.
resetError Nie.
update Tak

Polecenia transakcji

Polecenie Obsługiwane
abortTransaction Tak
commitTransaction Tak

Polecenia uwierzytelniania

Polecenie Obsługiwane
authenticate Tak
getnonce Tak
logout Tak

Polecenia administracyjne

Polecenie Obsługiwane
cloneCollectionAsCapped Nie
collMod Nie.
connectionStatus Nie.
convertToCapped Nie.
copydb Nie.
create Tak
createIndexes Tak
currentOp Tak
drop Tak
dropDatabase Tak
dropIndexes Tak
filemd5 Tak
killCursors Tak
killOp Nie
listCollections Tak
listDatabases Tak
listIndexes Tak
reIndex Tak
renameCollection Nie.

Polecenia diagnostyki

Polecenie Obsługiwane
buildInfo Tak
collStats Tak
connPoolStats Nie.
connectionStatus Nie.
dataSize Nie.
dbHash Nie.
dbStats Tak
explain Tak
features Nie
hostInfo Tak
listDatabases Tak
listCommands Nie.
profiler Nie.
serverStatus Nie.
top Nie.
whatsmyuri Tak

Potok agregacji

Polecenia agregacji

Polecenie Obsługiwane
aggregate Tak
count Tak
distinct Tak
mapReduce Nie.

Etapy agregacji

Polecenie Obsługiwane
addFields Tak
bucket Nie.
bucketAuto Nie.
changeStream Tak
collStats Nie
count Tak
currentOp Nie
facet Tak
geoNear Tak
graphLookup Tak
group Tak
indexStats Nie
limit Tak
listLocalSessions Nie.
listSessions Nie.
lookup Częściowe
match Tak
out Tak
project Tak
redact Tak
replaceRoot Tak
replaceWith Nie
sample Tak
skip Tak
sort Tak
sortByCount Tak
unwind Tak

Uwaga

$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.

Indeksowanie

Interfejs API dla bazy danych MongoDB obsługuje różne indeksy, aby umożliwić sortowanie w wielu polach, poprawić wydajność zapytań i wymusić unikatowość.

Kolekcja GridFS

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