適用対象:
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 でレプリケーションが処理される方法のため、厳密な整合性を使用する場合、すべての書き込みが既定で自動的にマジョリティ クォーラムになります。 クライアント コードによって指定される書き込み確認はすべて無視されます。 詳細については、整合性レベルを使用した可用性とパフォーマンスの最大化に関する記事を参照してください。
次のステップ