MongoDB、ドル記号( $
)またはピリオド(.
)を含むフィールド名が許可されます。ただし、 MongoDBこれらのフィールドを含む一部の機能をサポートしていないため、フィールド名内でこれらの文字を使用することは推奨されません。
ほとんどの場合、このようなフィールド名を使用して保存されたデータには直接アクセスできません。 これらのフィールドにアクセスするクエリでは、 $getField
、 $setField
、 $literal
などのヘルパー メソッドを使用する必要があります。
フィールド名の検証ルールは、すべてのタイプのストレージ操作で同じではありません。
一般的な制限
ドル記号($
)のプレフィックスがついたフィールド名や、ピリオド(.
)を含むフィールド名の使用には一般的な制限があります。これらのフィールドには、次のことはできません。
インデックスを付ける
シャードキーの一部に使用する
を使用して検証される
$jsonSchema
エスケープ シーケンスで変更する
_id
ドキュメントのサブフィールドに使用する
警告
ドル記号($)とピリオド(.)によるデータ損失の可能性
ドル記号($
)で始まるフィールド名や、ピリオド(.
)を含むフィールド名を使用し、MongoDB 5.0 以前のサーバーで未確認の書き込み(書き込み確認(write concern)w=0
)と組み合わせて使用すると、頻度は低いもののデータが失われる可能性があります。
insert
、update
、およびfindAndModify
コマンドを実行すると、5.0 互換のドライバーは、ドル記号($
)で始まるフィールド名またはピリオド( .
)を含むフィールド名を持つドキュメントの使用に対する制限を解除します。これらのフィールド名は、以前のドライバー バージョンではクライアント側のエラーを引き起こしていました。
ドライバーが接続されているサーバー バージョンに関係なく、制限は解除されます。5.0 ドライバーが古いサーバーにドキュメントを送信すると、エラーを送信することなくドキュメントは拒否されます。
警告
ドル記号($)とピリオド(.)に関するインポートとエクスポートの問題
MongoDB 5.0 以降、ドキュメントフィールド名に接頭辞としてドル記号($
)を付けたり、ピリオド(.
)を含めたりすることができます。ただし、フィールド名にこれらの記号が使用されている場合、状況によっては mongoimport
と mongoexport
が通常どおりに動作しないことがあります。
MongoDB Extended JSON v2では、型ラッパーと、型ラッパーと同じ名前を持つフィールドを区別できません。対応する BSON 表現にドル( $
)で始まるキーが含まれる可能性があるコンテキストでは、拡張 JSON 形式を使用しないでください。DBRef メカニズムは、この一般ルールの例外です。
フィールド名にピリオド(.
)が含まれる状態での mongoimport
と mongoexport
の使用にも制限があります。CSV ファイルではデータ階層を表すのにピリオド(.
)が使用されるため、フィールド名のピリオド(.
)はネストのレベルと誤解されます。
詳細
ピリオドとドル記号を含むフィールド名を処理する方法の例については、次のページを参照してください。