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
$lookup
nie 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"})
- Sukcesdb.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.
- Jeśli wszystko, co wiesz, to liczba rdzeni wirtualnych i serwerów w istniejącym klastrze bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu rdzeni wirtualnych lub procesorów wirtualnych
- Jeśli znasz typowe stawki żądań dla bieżącego obciążenia bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu planisty pojemności usługi Azure Cosmos DB
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla