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

DOTYCZY: Mongodb

Azure Cosmos DB to globalnie rozproszona usługa wielomodelowej bazy danych firmy Microsoft. Usługa Azure Cosmos DB oferuje wiele interfejsów API bazy danych. 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 obsługuje 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, których używasz, ze wszystkimi możliwościami przedsiębiorstwa zapewnianymi przez usługę Azure Cosmos DB: globalną dystrybucją, automatycznym fragmentowaniem, gwarancją dostępności i opóźnieniami, szyfrowaniem magazynowanych, kopiami zapasowymi i wiele innych.

Obsługa protokołów

W tym artykule 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 wersja 3.6 lub nowsza ma punkt końcowy w formacie *.mongo.cosmos.azure.com. 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. W poniższych sekcjach można znaleźć szczegółową listę 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 Nr
update Tak

Polecenia transakcji

Uwaga

Transakcje obejmujące wiele dokumentów są obsługiwane tylko w ramach pojedynczej kolekcji bez fragmentowania. Transakcje obejmujące wiele dokumentów między kolekcjami i między fragmentami nie są jeszcze obsługiwane w interfejsie API dla bazy danych MongoDB.

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 Nr
connectionStatus Nr
convertToCapped Nr
copydb Nr
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 Nr
dataSize Nr
dbHash Nr
dbStats Tak
explain Tak
features Nie.
hostInfo Tak
listDatabases Tak
listCommands Nie.
profiler Nr
serverStatus Nr
top Nr
whatsmyuri Tak

Potok agregacji

Usługa Azure Cosmos DB dla bazy danych MongoDB obsługuje następujące polecenia agregacji.

Polecenia agregacji

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

Etapy agregacji

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

Uwaga

Agregacja $lookup nie obsługuje jeszcze nieskorelowanej funkcji podzapytania wprowadzonej w wersji 3.6 serwera. Jeśli spróbujesz użyć $lookup operatora z polami let i pipeline , zostanie wyświetlony komunikat o błędzie wskazujący, że let nie jest obsługiwany .

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, które mają literał 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
round Tak
sqrt Tak
subtract Tak
trunc Tak

Wyrażenia trygonometryczne

Polecenie Obsługiwane
acos Tak
acosh Tak
asin Tak
asinh Tak
atan Tak
atan2 Tak
atanh Tak
cos Tak
cosh Tak
degreesToRadians Tak
radiansToDegrees Tak
sin Tak
sinh Tak
tan Tak
tanh 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
$$CLUSTERTIME Tak
$$CURRENT Tak
$$DESCEND Tak
$$KEEP Tak
$$NOW 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. Wersje 4.0 i nowsze (4.0 lub nowsze) zwiększają wykorzystanie wewnętrzne 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 tej 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 dla konta bazy danych nie można jej wyłączyć.

Aby włączyć obsługę dokumentów 16 MB, zmień ustawienie na karcie Funkcje zasobu w witrynie Azure Portal lub programowo dodaj EnableMongo16MBDocumentSupport możliwość.

Zalecamy włączenie ponawiania po stronie serwera i unikanie używania indeksów wieloznacznych w celu zapewnienia powodzenia żądań w większych dokumentach. Podniesienie bazy danych lub jednostek żądań 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

Usługa Azure Cosmos DB dla bazy danych MongoDB obsługuje następujące polecenia indeksu 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 Obsługiwane tylko w przypadku indeksów unikatowych
Case Insensitive Nie
Sparse Nr
Background Tak

Operatory

Usługa Azure Cosmos DB dla bazy danych MongoDB obsługuje następujące 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 polecenia $regex .
where Nie.

W $regex zapytaniach wyrażenia zakotwiczone po lewej stronie umożliwiają wyszukiwanie indeksów. Jednak użycie i modyfikatora (bez uwzględniania wielkości liter) i m modyfikatora (wielowierszowego) powoduje skanowanie kolekcji we wszystkich wyrażeniach.

Jeśli istnieje potrzeba uwzględnienia $ lub |, najlepiej utworzyć dwa (lub więcej) $regex zapytań.

Na przykład zmień następujące oryginalne zapytanie:

find({x:{$regex: /^abc$/})

Do tego zapytania:

find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})

Pierwsza część zmodyfikowanego zapytania używa indeksu, aby ograniczyć wyszukiwanie do dokumentów rozpoczynających się od ^abc. Druga część zapytania odpowiada dokładnym wpisom. Operator paska (|) działa jako funkcja "or". Zapytanie find({x:{$regex: /^abc |^def/}) jest zgodne z dokumentami, w których pole x ma wartości rozpoczynające się od abc lub def. Aby użyć indeksu, zalecamy podzielenie zapytania na dwa różne zapytania, które są przyłączone przez $or operator : 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 Nr
bitsAllClear Nr
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 Nr
$box Nr
$polygon Nie.

Operacje sortowania

W przypadku korzystania z findOneAndUpdate operacji operacje sortowania w jednym polu są obsługiwane. Operacje sortowania w wielu polach nie są obsługiwane.

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ść.

Szyfrowanie na poziomie pola po stronie klienta

Szyfrowanie pól na poziomie klienta jest funkcją sterownika i jest zgodne z interfejsem API dla bazy danych MongoDB. Jawne szyfrowanie, w którym sterownik jawnie szyfruje każde pole po zapisaniu, jest obsługiwane. Automatyczne szyfrowanie nie jest obsługiwane. Obsługiwane jest jawne odszyfrowywanie i automatyczne odszyfrowywanie.

Nie należy uruchamiać elementu mongocryptd , ponieważ nie jest wymagane do wykonania żadnej z obsługiwanych operacji.

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 jest również rozszerzona w celu osiągnięcia małych opóźnień i replikacji globalnej. Usługa Azure Cosmos DB nie obsługuje poleceń replikacji ręcznej.

Operacje zapisu z możliwością ponawiania prób

Funkcja zapisu z możliwością ponawiania umożliwia sterownikom bazy danych MongoDB automatyczne ponawianie prób niektórych operacji zapisu. Funkcja powoduje bardziej rygorystyczne wymagania dotyczące 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 wymagają, aby klucz fragmentu został uwzględniony w instrukcji filtru zapytania lub aktualizacji.

Na przykład w przypadku kolekcji podzielonej na fragmenty w kluczu "country" , aby usunąć wszystkie dokumenty, które mają pole "city" = "NYC", aplikacja musi wykonać operację dla wszystkich wartości klucza fragmentu ("country"), jeśli funkcja zapisu z możliwością ponawiania jest włączona.

  • 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, balancerStarti moveChunk. Klucz fragmentu należy określić tylko 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

Usługa Azure Cosmos DB obsługuje czas wygaśnięcia (TTL), który jest oparty na sygnaturze czasowej dokumentu. Czas wygaśnięcia można włączyć dla kolekcji w witrynie Azure Portal.

Niestandardowy czas wygaśnięcia

Ta funkcja umożliwia ustawienie niestandardowego czasu wygaśnięcia dla dowolnego pola w kolekcji.

W kolekcji, która ma włączony czas wygaśnięcia w polu:

  • Dopuszczalne typy to typy danych BSON i typy liczbowe (liczba całkowita, długa lub podwójna), które będą interpretowane jako sygnatura czasowa w milisekundach systemu Unix w celu określenia wygaśnięcia.

  • Jeśli pole czasu wygaśnięcia jest tablicą, najmniejszy element tablicy, który jest akceptowalnym typem, jest uznawany za wygaśnięcie dokumentu.

  • Jeśli w dokumencie brakuje pola czasu wygaśnięcia, dokument nie wygaśnie.

  • Jeśli pole czasu wygaśnięcia nie jest akceptowalnym typem, dokument nie wygaśnie.

Ograniczenia niestandardowego czasu wygaśnięcia

  • Tylko jedno pole w kolekcji może mieć ustawiony czas wygaśnięcia.

  • W przypadku niestandardowego zestawu \_ts pól czasu wygaśnięcia pole nie może być używane do wygaśnięcia dokumentu.

  • Nie można dodatkowo użyć \_ts pola.

Konfigurowanie

Możesz włączyć niestandardowy czas wygaśnięcia, aktualizując EnableTtlOnCustomPath możliwość konta. Dowiedz się , jak skonfigurować możliwości.

Konfigurowanie czasu wygaśnięcia

Aby skonfigurować czas wygaśnięcia, uruchom następujące polecenie: db.coll.createIndex({"YOUR_CUSTOM_TTL_FIELD":1}, {expireAfterSeconds: 10})

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 i klucze tylko do odczytu i zapisu, które można uzyskać za pośrednictwem witryny Azure Portal (na stronie ciągów Połączenie ion).

Problemy dotyczące zapisu

Niektóre aplikacje opierają się na problemie zapisu, który określa liczbę odpowiedzi wymaganych podczas operacji zapisu. Ze względu na sposób obsługi replikacji w tle przez usługę Azure Cosmos DB wszystkie zapisy są domyślnie automatycznie kworum. Wszelkie obawy dotyczące zapisu określone przez kod klienta są ignorowane. Dowiedz się, jak używać poziomów spójności, aby zmaksymalizować dostępność i wydajność.

Następne kroki