Azure Cosmos DB for MongoDB (バージョン 3.6): サポートされる機能と構文
[アーティクル] 08/15/2024
5 人の共同作成者
フィードバック
この記事の内容
適用対象: MongoDB
Azure Cosmos DB は、Microsoft のグローバルに分散されたマルチモデル データベース サービスです。 Azure Cosmos DB for MongoDB との通信は、オープン ソースで公開されている任意の MongoDB クライアント ドライバー を使用して行うことができます。 Azure Cosmos DB for MongoDB では、MongoDB ワイヤー プロトコル に従うことにより、既存のクライアント ドライバーを利用できます。
Azure Cosmos DB for MongoDB を使用すれば、使い慣れた MongoDB API を活用できます。グローバル配信 、自動シャーディング 、可用性や待ち時間の保証、保存時の暗号化、バックアップを始めとする Azure Cosmos DB のエンタープライズ機能をすべて利用できます。
注意
バージョン 3.6 の Azure Cosmos DB for MongoDB には、現在、サポート終了 (EOL) の計画はありません。 将来の EOL に関する通知は最低でも 3 年となります。
プロトコルのサポート
Azure Cosmos DB for MongoDB は、新しいアカウントでは、既定で MongoDB サーバー バージョン 3.6 と互換性があります。 以下に、サポートされている演算子およびすべての制限事項や例外の一覧を示します。 これらのプロトコルを認識するすべてのクライアント ドライバーは、Azure Cosmos DB for MongoDB に接続できるはずです。 MongoDB 用 Azure Cosmos DB API アカウントを作成するとき、3.6 バージョンのアカウントのエンドポイントが *.mongo.cosmos.azure.com
という形式であるのに対し、3.2 バージョンのアカウントのエンドポイントは *.documents.azure.com
という形式です。
クエリ言語のサポート
Azure Cosmos DB for MongoDB では、MongoDB クエリ言語のコンストラクトが包括的にサポートされます。 次のセクションでは、Azure Cosmos DB で現在サポートされているサーバー操作、演算子、ステージ、コマンド、およびオプションの詳細な一覧を示します。
Note
この記事では、サポートされているサーバー コマンドの一覧のみを示し、クライアント側のラッパー関数については除外しています。 deleteMany()
や updateMany()
などのクライアント側のラッパー関数は、内部では delete()
や update()
といったサーバー コマンドを利用しています。 サポートされるサーバー コマンドを利用している関数は、Azure Cosmos DB for MongoDB と互換性があります。
データベース コマンド
Azure Cosmos DB for MongoDB では、次のデータベース コマンドがサポートされます。
クエリおよび書き込み操作コマンド
command
サポートされています
change streams
はい
delete
はい
eval
いいえ
find
イエス
findAndModify
イエス
getLastError
イエス
getMore
はい
getPrevError
いいえ
insert
有効
parallelCollectionScan
いいえ
resetError
番号
update
はい
認証コマンド
command
サポートされています
authenticate
はい
getnonce
イエス
logout
はい
管理コマンド
command
サポートされています
cloneCollectionAsCapped
いいえ
collMod
番号
connectionStatus
番号
convertToCapped
番号
copydb
番号
create
イエス
createIndexes
イエス
currentOp
イエス
drop
イエス
dropDatabase
イエス
dropIndexes
イエス
filemd5
イエス
killCursors
はい
killOp
いいえ
listCollections
イエス
listDatabases
イエス
listIndexes
イエス
reIndex
はい
renameCollection
いいえ
診断コマンド
command
サポートされています
buildInfo
はい
collStats
はい
connPoolStats
いいえ
connectionStatus
番号
dataSize
番号
dbHash
番号
dbStats
イエス
explain
はい
features
いいえ
hostInfo
イエス
listDatabases
はい
listCommands
いいえ
profiler
番号
serverStatus
番号
top
番号
whatsmyuri
はい
集計パイプライン
集計コマンド
command
サポートされています
aggregate
はい
count
イエス
distinct
はい
mapReduce
いいえ
集計ステージ
command
サポートされています
addFields
はい
bucket
いいえ
bucketAuto
番号
changeStream
有効
collStats
いいえ
count
有効
currentOp
いいえ
facet
イエス
geoNear
イエス
graphLookup
イエス
group
はい
indexStats
いいえ
limit
有効
listLocalSessions
いいえ
listSessions
いいえ
lookup
Partial
match
はい
out
イエス
project
イエス
redact
イエス
replaceRoot
はい
replaceWith
いいえ
sample
イエス
skip
イエス
sort
イエス
sortByCount
イエス
unwind
はい
注意
$lookup
では、サーバー バージョン3.6 で導入された非相関サブクエリ 機能をまだサポートしていません。 let
および pipeline
フィールドで $lookup
演算子を使用しようとすると、let is not supported
という文字列を含むメッセージが表示されエラーが発生します。
ブール式
command
サポートされています
and
はい
not
イエス
or
はい
設定式
command
サポートされています
setEquals
はい
setIntersection
イエス
setUnion
イエス
setDifference
イエス
setIsSubset
イエス
anyElementTrue
イエス
allElementsTrue
はい
比較式
Note
MongoDB 用 API では、クエリ内で配列リテラルを使用した比較式はサポートされていません。
command
サポートされています
cmp
はい
eq
イエス
gt
イエス
gte
イエス
lt
イエス
lte
イエス
ne
イエス
in
イエス
nin
はい
算術式
command
サポートされています
abs
はい
add
イエス
ceil
イエス
divide
イエス
exp
イエス
floor
イエス
ln
イエス
log
イエス
log10
イエス
mod
イエス
multiply
イエス
pow
イエス
sqrt
イエス
subtract
イエス
trunc
はい
文字列式
command
サポートされています
concat
はい
indexOfBytes
イエス
indexOfCP
イエス
split
イエス
strLenBytes
イエス
strLenCP
イエス
strcasecmp
イエス
substr
イエス
substrBytes
イエス
substrCP
イエス
toLower
イエス
toUpper
はい
テキスト検索演算子
command
サポートされています
meta
いいえ
配列式
command
サポートされています
arrayElemAt
はい
arrayToObject
イエス
concatArrays
イエス
filter
イエス
indexOfArray
イエス
isArray
イエス
objectToArray
イエス
range
イエス
reverseArray
イエス
reduce
イエス
size
イエス
slice
イエス
zip
イエス
in
はい
変数演算子
command
サポートされています
map
はい
let
はい
システム変数
command
サポートされています
$$CURRENT
はい
$$DESCEND
イエス
$$KEEP
イエス
$$PRUNE
イエス
$$REMOVE
イエス
$$ROOT
はい
リテラル演算子
command
サポートされています
literal
はい
日付式
command
サポートされています
dayOfYear
はい
dayOfMonth
イエス
dayOfWeek
イエス
year
イエス
month
イエス
week
イエス
hour
イエス
minute
イエス
second
イエス
millisecond
イエス
dateToString
イエス
isoDayOfWeek
イエス
isoWeek
イエス
dateFromParts
イエス
dateToParts
イエス
dateFromString
イエス
isoWeekYear
はい
条件式
command
サポートされています
cond
はい
ifNull
イエス
switch
はい
データ型演算子
command
サポートされています
type
はい
アキュムレータ式
command
サポートされています
sum
はい
avg
イエス
first
イエス
last
イエス
max
イエス
min
イエス
push
イエス
addToSet
イエス
stdDevPop
イエス
stdDevSamp
はい
マージ演算子
command
サポートされています
mergeObjects
はい
データ型
command
サポートされています
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
はい
インデックスとそのプロパティ
インデックス
command
サポートされています
Single Field Index
はい
Compound Index
イエス
Multikey Index
はい
Text Index
いいえ
2dsphere
有効
2d Index
いいえ
Hashed Index
No
インデックスのプロパティ
command
サポートされています
TTL
はい
Unique
はい
Partial
いいえ
Case Insensitive
番号
Sparse
番号
Background
はい
オペレーター
論理演算子
command
サポートされています
or
はい
and
イエス
not
イエス
nor
はい
要素演算子
command
サポートされています
exists
はい
type
はい
評価クエリ演算子
command
サポートされています
expr
はい
jsonSchema
いいえ
mod
イエス
regex
はい
text
いいえ (サポートされていません。$regex を使用してください)
where
いいえ
$regex クエリでは、左固定の式でインデックス検索が可能です。 ただし、'i' 修飾子 (大文字と小文字の区別なし) や 'm' 修飾子 (複数行) を使用すると、すべての式でコレクション スキャンが発生します。
$
または |
を含める必要がある場合、2 つ (以上) の正規表現クエリを作成することをお勧めします。 たとえば、元のクエリとして find({x:{$regex: /^abc$/})
がある場合、次のように変更する必要があります:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
最初の部分では、インデックスを使用して検索を ^abc で始まるドキュメントに制限し、2 番目の部分で入力そのものを照合します。 バー演算子 |
は "or" 関数として機能します。そのためクエリ find({x:{$regex: /^abc |^def/})
は、フィールド x
の値が "abc"
または "def"
で始まるドキュメントに一致します。 インデックスを利用するには、find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] })
のように、クエリを 2 つの異なるクエリに分割し、$or 演算子で結合することをお勧めします。
配列演算子
command
サポートされています
all
はい
elemMatch
イエス
size
はい
command
サポートされています
comment
はい
射影演算子
command
サポートされています
elemMatch
はい
meta
いいえ
slice
はい
更新演算子
フィールド更新演算子
command
サポートされています
inc
はい
mul
イエス
rename
イエス
setOnInsert
イエス
set
イエス
unset
イエス
min
イエス
max
イエス
currentDate
はい
配列更新演算子
command
サポートされています
$
はい
$[]
イエス
$[\<identifier\>]
イエス
addToSet
イエス
pop
イエス
pullAll
イエス
pull
イエス
push
イエス
pushAll
はい
更新修飾子
command
サポートされています
each
はい
slice
イエス
sort
イエス
position
はい
ビット単位更新演算子
command
サポートされています
bit
はい
bitsAllSet
いいえ
bitsAnySet
番号
bitsAllClear
番号
bitsAnyClear
いいえ
地理空間演算子
演算子
サポートされています
$geoWithin
はい
$geoIntersects
イエス
$near
イエス
$nearSphere
イエス
$geometry
イエス
$minDistance
イエス
$maxDistance
はい
$center
いいえ
$centerSphere
番号
$box
番号
$polygon
いいえ
並べ替え操作
findOneAndUpdate
操作を使用する場合、単一フィールドに対する並べ替え操作はサポートされていますが、複数フィールドに対する並べ替え操作はサポートされていません。
インデックス作成
MongoDB 用 API では、複数のフィールドでの並べ替えを有効にし、クエリのパフォーマンスを向上させ、一意性を適用するため、さまざまなインデックスがサポートされています 。
GridFS
Azure Cosmos DB では、GridFS と互換性のある MongoDB ドライバーを通じて GridFS がサポートされています。
レプリケーション
Cosmos azure DB では、最下位のレイヤーで、自動のネイティブ レプリケーションがサポートされています。 このロジックは、低待機時間のグローバルなレプリケーションも実現するために拡張されています。 Azure Cosmos DB では、手動のレプリケーション コマンドはサポートされていません。
再試行可能書き込み
Azure Cosmos DB では、再試行可能書き込みはまだサポートされていません。 クライアントのドライバーでは、接続文字列に retryWrites=false
を追加する必要があります。
シャーディング
Azure Cosmos DB は、自動のサーバー側シャーディングをサポートしています。 シャードの作成、配置、バランシングが自動的に管理されます。 Azure Cosmos DB では、手動のシャーディング コマンドはサポートされていません。つまり、addShard、balancerStart、moveChunk などのコマンドを呼び出す必要はありません。必要なのは、コンテナーの作成時やデータの照会時にシャード キーを指定することだけです。
セッション
Azure Cosmos DB では、サーバー側のセッション コマンドはまだサポートされていません。
Time-to-live (TTL)
Azure Cosmos DB では、ドキュメントのタイムスタンプに基づく Time-to-live (TTL) がサポートされます。 コレクションに対して TTL を有効にするには、Azure portal を使用します。
ユーザーとロールの管理
Azure Cosmos DB では、ユーザーとロールはまだサポートされていません。 ただし、Azure ロールベース アクセス制御 (Azure RBAC) と、Azure portal ([接続文字列] ペイン) から取得できる読み取り/書き込みおよび読み取り専用のパスワードまたはキーがサポートされています。
書き込み確認
一部のアプリケーションでは、書き込み操作中に必要な応答数を指定する書き込み確認 が利用されています。 Azure Cosmos DB でレプリケーションが処理される方法のため、厳密な整合性を使用する場合、すべての書き込みが既定で自動的にマジョリティ クォーラムになります。 クライアント コードによって指定される書き込み確認はすべて無視されます。 詳細については、整合性レベルを使用した可用性とパフォーマンスの最大化 に関する記事を参照してください。
次のステップ