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

DOTYCZY: Mongodb

Azure Cosmos DB to rozproszona globalnie, wielomodelowa usługa bazy danych firmy 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 używanej bazy danych MongoDB ze wszystkimi możliwościami przedsiębiorstwa zapewnianymi przez usługę Azure Cosmos DB: globalną dystrybucję, automatyczne fragmentowanie, dostępność i gwarancje 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 eksploatacji (EOL). Minimalne powiadomienie dotyczące 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 kont interfejsu API usługi Azure Cosmos DB dla bazy danych MongoDB punkt końcowy w wersji 3.6 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 updateMany() wewnętrznie używają delete() poleceń serwera i .update() 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:

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

$lookup nie obsługuje jeszcze nieskorelowanej funkcji podzapytania wprowadzonej w wersji 3.6 serwera. Jeśli spróbujesz użyć operatora z polami i, zostanie wyświetlony komunikat z komunikatem zawierającym let is not supported$lookup.pipelinelet

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 systemu

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ń ewaluacyjnych

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 umożliwiają 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$/}), należy go zmodyfikować 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 na jednym polu są obsługiwane, ale operacje sortowania w wielu polach nie są obsługiwane.

Indeksowanie

Interfejs API dla bazy danych MongoDB obsługuje różne indeksy umożliwiające sortowanie wielu pól, poprawianie wydajności zapytań i wymuszanie unikatowości.

Kolekcja GridFS

Usługa Azure Cosmos DB obsługuje system plików GridFS za pośrednictwem 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ą dodać retryWrites=false do swoich parametrów 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 z 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 odczytu, które można uzyskać za pośrednictwem okienka parametrów połączenia w Azure Portal.

Ustawienie Write Concern

Niektóre aplikacje polegają na problemie zapisu, który określa liczbę odpowiedzi wymaganych podczas operacji zapisu. Ze względu na sposób obsługi replikacji w usłudze Azure Cosmos DB wszystkie operacje zapisu 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 .

Następne kroki