次の方法で共有


Azure Cosmos DB for MongoDB (バージョン 3.6): サポートされる機能と構文

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

次のステップ