다음을 통해 공유


Azure Cosmos DB for MongoDB 3.6 서버 버전에서 지원되는 기능 및 구문

Azure Cosmos DB for MongoDB 3.6을 사용하면 전역 배포, 자동 분할 및 고가용성과 같은 엔터프라이즈급 기능으로 친숙한 MongoDB 기능을 사용할 수 있습니다. 이 문서에서는 MongoDB 3.6용 Azure Cosmos DB를 사용할 때 지원되는 기능, 구문 및 이점에 대해 설명합니다.

중요합니다

Azure Cosmos DB for MongoDB 버전 3.6에는 현재 지원 종료 계획이 없습니다. 향후 지원 종료에 대한 최소 통지는 3년입니다.

프로토콜 지원

Azure Cosmos DB for MongoDB는 새 계정의 경우 기본적으로 MongoDB 서버 버전 3.6과 호환됩니다. 지원되는 연산자 및 모든 제한 사항 또는 예외가 여기에 나열되어 있습니다. 이러한 프로토콜을 인식하는 모든 클라이언트 드라이버는 Azure Cosmos DB for MongoDB에 연결할 수 있습니다. Azure Cosmos DB API for MongoDB 계정을 만드는 경우 3.6 버전의 계정에는 *.mongo.cosmos.azure.com 형식의 엔드포인트가 있지만 3.2 버전의 계정에는 *.documents.azure.com 형식의 엔드포인트가 있습니다.

쿼리 언어 지원

Azure Cosmos DB for MongoDB는 MongoDB 쿼리 언어 구문을 포괄적으로 지원합니다. 다음 섹션에서는 Azure Cosmos DB에서 현재 지원되는 서버 작업, 연산자, 단계, 명령 및 옵션에 대한 자세한 목록을 보여줍니다.

참고 항목

이 문서에서는 지원되는 서버 명령만 나열하고 클라이언트 쪽 래퍼 함수는 제외합니다. deleteMany()updateMany()와 같은 클라이언트 쪽 래퍼 함수는 내부적으로 delete()update() 서버 명령을 활용합니다. 지원되는 서버 명령을 활용하는 함수는 Azure Cosmos DB for MongoDB와 호환됩니다.

데이터베이스 명령

Azure Cosmos DB for MongoDB는 다음과 같은 데이터베이스 명령을 지원합니다.

쿼리 및 쓰기 작업 명령

지원됨
change streams ✅ 예
delete ✅ 예
eval ✖️ 아니요
find ✅ 예
findAndModify ✅ 예
getLastError ✅ 예
getMore ✅ 예
getPrevError ✖️ 아니요
insert ✅ 예
parallelCollectionScan ✖️ 아니요
resetError ✖️ 아니요
update ✅ 예

인증 명령

지원됨
authenticate ✅ 예
getnonce ✅ 예
logout ✅ 예

관리 명령

지원됨
cloneCollectionAsCapped ✖️ 아니요
collMod ✖️ 아니요
connectionStatus ✖️ 아니요
convertToCapped ✖️ 아니요
copydb ✖️ 아니요
create ✅ 예
createIndexes ✅ 예
currentOp ✅ 예
drop ✅ 예
dropDatabase ✅ 예
dropIndexes ✅ 예
filemd5 ✅ 예
killCursors ✅ 예
killOp ✖️ 아니요
listCollections ✅ 예
listDatabases ✅ 예
listIndexes ✅ 예
reIndex ✅ 예
renameCollection ✖️ 아니요

진단 명령

지원됨
buildInfo ✅ 예
collStats ✅ 예
connPoolStats ✖️ 아니요
connectionStatus ✖️ 아니요
dataSize ✖️ 아니요
dbHash ✖️ 아니요
dbStats ✅ 예
explain ✅ 예
features ✖️ 아니요
hello ✅ 예
hostInfo ✅ 예
listDatabases ✅ 예
listCommands ✖️ 아니요
profiler ✖️ 아니요
serverStatus ✖️ 아니요
top ✖️ 아니요
whatsmyuri ✅ 예

집계 파이프라인

집계 명령

지원됨
aggregate ✅ 예
count ✅ 예
distinct ✅ 예
mapReduce ✖️ 아니요

집계 단계

지원됨
addFields ✅ 예
bucket ✖️ 아니요
bucketAuto ✖️ 아니요
changeStream ✅ 예
collStats ✖️ 아니요
count ✅ 예
currentOp ✖️ 아니요
facet ✅ 예
geoNear ✅ 예
graphLookup ✅ 예
group ✅ 예
indexStats ✖️ 아니요
limit ✅ 예
listLocalSessions ✖️ 아니요
listSessions ✖️ 아니요
lookup ❓부분적인
match ✅ 예
out ✅ 예
project ✅ 예
redact ✅ 예
replaceRoot ✅ 예
replaceWith ✖️ 아니요
sample ✅ 예
skip ✅ 예
sort ✅ 예
sortByCount ✅ 예
unwind ✅ 예

참고 항목

$lookup 는 서버 버전 3.6에 도입된 상호 관련되지 않은 하위 쿼리 기능을 아직 지원하지 않습니다. 연산 letpipeline 자와 필드를 사용 $lookup 하려고 하면 메시지가 포함된 let is not supported 오류가 표시됩니다.

부울 식

지원됨
and ✅ 예
not ✅ 예
or ✅ 예

식 설정

지원됨
setEquals ✅ 예
setIntersection ✅ 예
setUnion ✅ 예
setDifference ✅ 예
setIsSubset ✅ 예
anyElementTrue ✅ 예
allElementsTrue ✅ 예

비교 식

참고 항목

MongoDB용 API는 쿼리에서 배열 리터럴을 사용하는 비교 식을 지원하지 않습니다.

지원됨
cmp ✅ 예
eq ✅ 예
gt ✅ 예
gte ✅ 예
lt ✅ 예
lte ✅ 예
ne ✅ 예
in ✅ 예
nin ✅ 예

산술 식

지원됨
abs ✅ 예
add ✅ 예
ceil ✅ 예
divide ✅ 예
exp ✅ 예
floor ✅ 예
ln ✅ 예
log ✅ 예
log10 ✅ 예
mod ✅ 예
multiply ✅ 예
pow ✅ 예
sqrt ✅ 예
subtract ✅ 예
trunc ✅ 예

문자열 식

지원됨
concat ✅ 예
indexOfBytes ✅ 예
indexOfCP ✅ 예
split ✅ 예
strLenBytes ✅ 예
strLenCP ✅ 예
strcasecmp ✅ 예
substr ✅ 예
substrBytes ✅ 예
substrCP ✅ 예
toLower ✅ 예
toUpper ✅ 예

텍스트 검색 연산자

지원됨
meta ✖️ 아니요

배열 식

지원됨
arrayElemAt ✅ 예
arrayToObject ✅ 예
concatArrays ✅ 예
filter ✅ 예
indexOfArray ✅ 예
isArray ✅ 예
objectToArray ✅ 예
range ✅ 예
reverseArray ✅ 예
reduce ✅ 예
size ✅ 예
slice ✅ 예
zip ✅ 예
in ✅ 예

변수 연산자

지원됨
map ✅ 예
let ✅ 예

시스템 변수

지원됨
$$CURRENT ✅ 예
$$DESCEND ✅ 예
$$KEEP ✅ 예
$$PRUNE ✅ 예
$$REMOVE ✅ 예
$$ROOT ✅ 예

리터럴 연산자

지원됨
literal ✅ 예

날짜 식

지원됨
dayOfYear ✅ 예
dayOfMonth ✅ 예
dayOfWeek ✅ 예
year ✅ 예
month ✅ 예
week ✅ 예
hour ✅ 예
minute ✅ 예
second ✅ 예
millisecond ✅ 예
dateToString ✅ 예
isoDayOfWeek ✅ 예
isoWeek ✅ 예
dateFromParts ✅ 예
dateToParts ✅ 예
dateFromString ✅ 예
isoWeekYear ✅ 예

조건부 식

지원됨
cond ✅ 예
ifNull ✅ 예
switch ✅ 예

데이터 형식 연산자

지원됨
type ✅ 예

누적기 식

지원됨
sum ✅ 예
avg ✅ 예
first ✅ 예
last ✅ 예
max ✅ 예
min ✅ 예
push ✅ 예
addToSet ✅ 예
stdDevPop ✅ 예
stdDevSamp ✅ 예

Merge 연산자

지원됨
mergeObjects ✅ 예

데이터 형식

지원됨
Double ✅ 예
String ✅ 예
Object ✅ 예
Array ✅ 예
Binary Data ✅ 예
ObjectId ✅ 예
Boolean ✅ 예
Date ✅ 예
Null ✅ 예
32-bit Integer (int) ✅ 예
Timestamp ✅ 예
64-bit Integer (long) ✅ 예
MinKey ✅ 예
MaxKey ✅ 예
Decimal128 ✅ 예
Regular Expression ✅ 예
JavaScript ✅ 예
JavaScript (with scope) ✅ 예
Undefined ✅ 예

인덱스 및 인덱스 속성

인덱스

지원됨
Single Field Index ✅ 예
Compound Index ✅ 예
Multikey Index ✅ 예
Text Index ✖️ 아니요
2dsphere ✅ 예
2d Index ✖️ 아니요
Hashed Index ✖️ 아니요

인덱스 속성

지원됨
TTL ✅ 예
Unique ✅ 예
Partial ✖️ 아니요
Case Insensitive ✖️ 아니요
Sparse ✖️ 아니요
Background ✅ 예

연산자

논리 연산자

지원됨
or ✅ 예
and ✅ 예
not ✅ 예
nor ✅ 예

요소 연산자

지원됨
exists ✅ 예
type ✅ 예

평가 쿼리 연산자

지원됨
expr ✅ 예
jsonSchema ✖️ 아니요
mod ✅ 예
regex ✅ 예
text ✖️ 아니요
where ✖️ 아니요

$regex 쿼리에서 왼쪽에 고정된 식은 인덱스 검색을 허용합니다. 그러나 ‘i’ 한정자(대/소문자 구분 없음) 및 ‘m’ 한정자(여러 줄)를 사용하면 모든 식에서 컬렉션 검사가 수행됩니다.

$ 또는 |를 포함해야 하는 경우 두 개 이상의 정규식 쿼리를 만드는 것이 가장 좋습니다. 예를 들어, 다음 원래 쿼리가 find({x:{$regex: /^abc$/})인 경우 이를 다음과 같이 수정해야 합니다.

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

첫 번째 부분에서는 인덱스로 시작하여 해당 문서로 검색을 제한하고 두 번째 부분은 정확한 항목과 ^abc 일치합니다. 막대 연산자 |는 “or” 함수 역할을 하고, find({x:{$regex: /^abc |^def/}) 쿼리는 x 필드에 "abc" 또는 "def"로 시작하는 값이 있는 문서를 일치하는 항목으로 검색합니다. 인덱스를 활용하려면 쿼리를 $or 연산 find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] })자가 조인한 두 개의 서로 다른 쿼리로 분할합니다.

팁 (조언)

text 명령은 지원되지 않습니다. $regex를 대신 사용하세요.

배열 연산자

지원됨
all ✅ 예
elemMatch ✅ 예
size ✅ 예

설명 연산자

지원됨
comment ✅ 예

프로젝션 연산자

지원됨
elemMatch ✅ 예
meta ✖️ 아니요
slice ✅ 예

업데이트 연산자

필드 업데이트 연산자

지원됨
inc ✅ 예
mul ✅ 예
rename ✅ 예
setOnInsert ✅ 예
set ✅ 예
unset ✅ 예
min ✅ 예
max ✅ 예
currentDate ✅ 예

배열 업데이트 연산자

지원됨
$ ✅ 예
$[] ✅ 예
$[\<identifier\>] ✅ 예
addToSet ✅ 예
pop ✅ 예
pullAll ✅ 예
pull ✅ 예
push ✅ 예
pushAll ✅ 예

한정자 업데이트

지원됨
each ✅ 예
slice ✅ 예
sort ✅ 예
position ✅ 예

비트 업데이트 연산자

지원됨
bit ✅ 예
bitsAllSet ✖️ 아니요
bitsAnySet ✖️ 아니요
bitsAllClear ✖️ 아니요
bitsAnyClear ✖️ 아니요

지리 공간적 연산자

지원됨
$geoWithin ✅ 예
$geoIntersects ✅ 예
$near ✅ 예
$nearSphere ✅ 예
$geometry ✅ 예
$minDistance ✅ 예
$maxDistance ✅ 예
$center ✖️ 아니요
$centerSphere ✖️ 아니요
$box ✖️ 아니요
$polygon ✖️ 아니요

정렬 작업

findOneAndUpdate 작업을 사용하는 경우 단일 필드에 대한 정렬 작업이 지원되지만 여러 필드에 대한 정렬 작업은 지원되지 않습니다.

인덱싱

API for MongoDB는 여러 필드에 대한 정렬을 사용하도록 설정하고, 쿼리 성능을 향상시키고, 고유성을 적용할 수 있도록 다양한 인덱스를 지원합니다.

GridFS

Azure Cosmos DB는 GridFS 호환 MongoDB 드라이버를 통해 GridFS를 지원합니다.

복제

Azure Cosmos DB는 가장 낮은 계층에서 자동의 네이티브 복제를 지원합니다. 이 논리는 또한 짧은 대기 시간, 글로벌 복제를 달성하기 위해 확장됩니다. Azure Cosmos DB는 수동 복제 명령을 지원하지 않습니다.

다시 시도 가능한 쓰기

Azure Cosmos DB는 아직 다시 시도 가능한 쓰기를 지원하지 않습니다. 클라이언트 드라이버가 연결 문자열에 retryWrites=false를 추가해야 합니다.

분할

Azure Cosmos DB는 서버 측 자동 분할을 지원합니다. 분할 만들기, 배치 및 분산을 자동으로 관리합니다. Azure Cosmos DB는 수동 분할 명령을 지원하지 않습니다. 즉, 다음과 같은 addShardbalancerStartmoveChunk명령을 호출할 필요가 없습니다. 컨테이너를 만들거나 데이터를 쿼리하는 동안 분할된 데이터베이스 키를 지정하기만 하면 됩니다.

세션

Azure Cosmos DB는 아직 서버 쪽 세션 명령을 지원하지 않습니다.

TTL(Time to Live)

Azure Cosmos DB는 문서의 타임스탬프를 기반으로 TTL(Time to Live)을 지원합니다. Azure Portal에서 컬렉션에 TTL을 사용하도록 설정할 수 있습니다.

사용자 및 역할 관리

Azure Cosmos DB는 아직 사용자 및 역할을 지원하지 않습니다. 그러나 Azure Portal의 연결 문자열 창을 통해 가져올 수 있는 Azure 역할 기반 액세스 제어 및 읽기/쓰기 및 읽기 전용 암호 또는 키를 지원합니다.

쓰기 문제

일부 애플리케이션은 쓰기 작업 중에 필요한 응답 수를 지정하는 쓰기 문제를 사용합니다. 강력한 일관성을 사용하는 경우 Azure Cosmos DB에서 복제를 처리하는 방법으로 인해 모든 쓰기는 기본적으로 과반수 쿼럼을 자동으로 사용합니다. 클라이언트 코드를 통해 지정된 모든 쓰기 문제는 무시됩니다. 자세히 알아보려면 일관성 수준을 사용하여 가용성 및 성능 최대화 문서를 참조하세요.