create
定義
create
コレクションまたはビューを明示的に作成します。
注意
このコマンドによって作成されたビューは、マテリアライズド ビューを参照しません。 オンデマンドのマテリアライズドビューについて詳しくは、代わりに
$merge
を参照してください。
互換性
このコマンドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、 「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
create
コマンドの構文は次のとおりです。
注意
MongoDB 6.3 では、 bucketMaxSpanSeconds
およびbucketRoundingSeconds
パラメーターが追加されました。6.3 より下にダウングレードするには、これらのパラメーターを持つすべてのコレクションを削除するか、可能な場合は対応する granularity
を使用するようにコレクションを変更する必要があります。詳しくは、collMod
を参照してください。
{ create: <collection or view name>, capped: <true|false>, timeseries: { timeField: <string>, metaField: <string>, granularity: <string> }, expireAfterSeconds: <number>, autoIndexId: <true|false>, size: <max_size>, max: <max_documents>, storageEngine: <document>, validator: <document>, validationLevel: <string>, validationAction: <string>, indexOptionDefaults: <document>, viewOn: <source>, pipeline: <pipeline>, collation: <document>, writeConcern: <document>, comment: <any> }
コマンドフィールド
create
コマンドには次のフィールドがあります:
フィールド | タイプ | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
create | string | 新しいコレクションまたはビューの名前。詳細は、「命名制限」を参照してください。 | ||||||||||
capped | ブール値 | |||||||||||
timeseries.timeField | string | 必須(時系列コレクションの作成時)。各時系列ドキュメントの日付を含むフィールドの名前です。時系列コレクション内のドキュメントには、 timeField の値として有効な BSON 日付が必要です。 | ||||||||||
timeseries.metaField | string | オプション。各時系列ドキュメントのメタデータを含むフィールドの名前。指定されたフィールドのメタデータは、ユニークな一連のドキュメントにラベルを付けるために使用されるデータでなければなりません。メタデータは、変更されることはほとんどありません。 指定フィールドの名前を | ||||||||||
timeseries.granularity | string | 任意。 指定できる値は、 "seconds" (デフォルト)、 "minutes" 、 "hours" です。 粒度を、連続する受信測定間の時間範囲に最も近い値に設定します。 granularity パラメーターを設定すると、時系列コレクション内のデータが内部的に保存される方法が最適化され、パフォーマンスが正確に向上します。 | ||||||||||
expireAfterSeconds | 数値 | 任意。 ドキュメントの有効期限が切れるまでの秒数を指定して、時系列コレクション内のドキュメントの自動削除を有効にします。 MongoDB によって期限切れのドキュメントが自動的に削除されます。 | ||||||||||
autoIndexId | ブール値 | 任意。 重要MongoDB 4.0 以降では、 バージョン 3.2 以降非推奨。 | ||||||||||
size | integer | 任意。上限付きコレクションの最大サイズをバイト単位で指定します。MongoDB は、上限付きコレクションが最大サイズに達すると、古いドキュメントを削除して新しいドキュメント用スペースを確保します。 size フィールドは、上限付きコレクションに必須であり、他のコレクションでは無視されます。 | ||||||||||
max | integer | 任意。上限付きコレクションで許可されるドキュメントの最大数。 size の制限がこの制限よりも優先されます。上限付きコレクションがドキュメントの最大数に達する前に size の制限に達した場合、MongoDB は古いドキュメントを削除します。max 制限の使用を優先する場合は、上限付きコレクションに必要な size 制限をドキュメントの最大数を十分に超える値に設定してください。 | ||||||||||
storageEngine | ドキュメント | 任意。WiredTiger ストレージエンジンでのみ使用できます。 コレクション作成時に、ユーザーがコレクションごとにストレージエンジンの構成を指定できるようにします。
コレクション作成時に指定されたストレージエンジンの設定は、レプリカセット内で異なるストレージエンジンを使用するノードをサポートするために、複製中に oplog に検証され、ログが記録されます。 詳細については、「ストレージエンジン オプションの指定」を参照してください。 | ||||||||||
validator | ドキュメント | 任意。 ユーザーがコレクションの検証ルールまたは式を指定できるようにします。 詳細については、「スキーマの検証 」を参照してください。 バージョン 3.2 で追加。
| ||||||||||
validationLevel | string | 任意。更新中に MongoDB が既存のドキュメントに検証ルールをどの程度厳密に適用するかを決定します。 バージョン 3.2 で追加。
| ||||||||||
validationAction | string | 任意。無効なドキュメントで ドキュメントの検証は、
| ||||||||||
indexOptionDefaults | ドキュメント | 任意。ユーザーがコレクションの作成時にインデックスのデフォルト構成を指定できるようにします。
インデックスの作成時に指定されたストレージエンジン構成は、異なるストレージエンジンを使用するノードのあるレプリカセットをサポートするために、レプリケーション中に検証され、oplog に記録されます。 バージョン 3.2 で追加。 | ||||||||||
viewOn | string | ビューを作成するソース・コレクションまたはビューの名前。 名前はコレクションまたはビューの完全な名前空間ではありません。つまり、データベース名が含まれておらず、作成するビューと同じデータベースであることを暗示します。 ソース コレクションと同じデータベースにビューを作成する必要があります。 バージョン 3.4 で追加。 | ||||||||||
pipeline | 配列 | 集計パイプラインステージで構成される配列。 ビュー定義 ビュー定義はパブリックです。つまり、ビューに対する | ||||||||||
collation | コレクションまたはビューのデフォルトの照合手順を指定します。 照合を指定すると、大文字・小文字やアクセント記号など、文字列を比較するための言語独自のルールを指定できます。 照合オプションの構文は次のとおりです。
照合を指定する場合、 コレクション・レベルで照合を指定すると、次の効果が生じます。
コレクションにも操作にも照合が指定されていない場合、MongoDB では以前のバージョンで使用されていた単純なバイナリ比較によって文字列が比較されます。 ビューの場合、照合方法が指定されていない場合、ビューのデフォルトの照合には「単純な」バイナリ比較照合子が使用されます。コレクションのビューの場合、ビューはコレクションの照合設定を継承しません。別のビュー上のビューの場合、作成されるビューで同じ照合設定を指定する必要があります。 コレクションまたはビューを作成した後は、そのデフォルトの照合方法をアップデートすることはできません。 コレクションの作成中にデフォルトの照合を指定する例については、「照合を指定する」を参照してください。 バージョン 3.4 で追加。 | |||||||||||
writeConcern | ドキュメント | 任意。操作の書込み保証(write concern)を表現するドキュメント。デフォルトの書込み保証を使用する場合は省略します。 シャーディングされたクラスターで発行すると、 | ||||||||||
comment | any | 任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。
コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。 バージョン 4.4 で追加。 |
db.createCollection()
メソッドとdb.createView()
メソッドはcreate
コマンドをラップします。
動作
リソースのロック
バージョン 4.2 で変更。
create
は、操作中、指定されたコレクションまたはビューに対する排他ロックを取得します。 コレクションに対する後続のすべての操作は、 create
がロックを解放するまで待機する必要があります。 create
は通常、このロックを短時間保持します。
ビューを作成するには、データベース内の system.views
コレクションに対する追加の排他ロックを取得する必要があります。このロックは、コマンドが完了するまでデータベース内のビューの作成または変更をブロックします。
MongoDB 4.2より前は、 create
は親データベースに対して排他ロックを取得し、操作が完了するまでデータベースとそのコレクションに対するすべての操作をブロックします。
トランザクション
バージョン 4.4 で変更。
トランザクションがクロスシャード間書込みトランザクション(write transaction)でない場合に、分散トランザクション内にコレクションとインデックスを作成できます。
トランザクションで create
を使用するには、そのトランザクションで読み取り保証(read concern)"local"
を使用する必要があります。読み取り保証レベルを "local"
以外に指定すると、トランザクションは失敗します。
Stable API
バージョン 5.0 での変更。
Stable API V 1を使用する場合、 create
コマンドで次のフィールドを指定できません。
autoIndexId
capped
indexOptionDefaults
max
size
storageEngine
アクセス制御
配置で認証/承認が強制される場合、 create
には次の特権が必要です。
タスク | 必要な特権 |
---|---|
上限のないコレクションの作成 | データベース上の
|
上限付きコレクションの作成 |
|
ビューの作成 |
ただし、ユーザーがデータベースに対して |
データベースに対して readWrite
組み込みロールを持つユーザーは、リスト内の操作を実行するために必要な権限があります。必要なロールを持つユーザーを作成するか、既存ユーザーにロールを付与してください。
例
上限付きコレクションの作成
64 キロバイトに制限された 上限付きコレクションを作成するには、次の形式でコマンドを発行します。
db.runCommand( { create: "collection", capped: true, size: 64 * 1024 } )
時系列コレクションの作成
過去 24 時間の気象データを取得する時系列コレクションを作成するには、次のコマンドを実行します。
db.createCollection( "weather24h", { timeseries: { timeField: "timestamp", metaField: "data", granularity: "hours" }, expireAfterSeconds: 86400 } )
注意
この例では、expireAfterSeconds
は 86400
として指定されており、ドキュメントは timestamp
の値から 86400
秒後に期限切れになることを意味します。「時系列コレクション(TTL)の自動削除を設定する」を参照してください。
ビューを作成する
注意
このコマンドによって作成されたビューは、マテリアライズド ビューを参照しません。 オンデマンドのマテリアライズドビューについては、代わりに $merge
を参照してください。
バージョン 4.2 で変更。
ビュー定義pipeline
には$out
または$merge
ステージを含めることはできません。 ビュー定義にネストされたパイプラインが含まれている場合(たとえば、ビュー定義に$lookup
または$facet
ステージが含まれている場合)、この制限はネストされたパイプラインにも適用されます。
create
コマンドを使用して ビュー を作成するには、次の構文を使用します。
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline> } )
または照合を指定する場合は、次の手順に従います。
db.runCommand( { create: <view>, viewOn: <source>, pipeline: <pipeline>, collation: <collation> } )
たとえば、以下のドキュメントでsurvey
コレクションを作成する場合、
db.survey.insertMany( [ { _id: 1, empNumber: "abc123", feedback: { management: 3, environment: 3 }, department: "A" }, { _id: 2, empNumber: "xyz987", feedback: { management: 2, environment: 3 }, department: "B" }, { _id: 3, empNumber: "ijk555", feedback: { management: 3, environment: 4 }, department: "A" } ] )
次の操作は、_id
、feedback.management
、および department
フィールドを持つ managementRatings
ビューを作成します。
db.runCommand ( { create: "managementFeedback", viewOn: "survey", pipeline: [ { $project: { "management": "$feedback.management", department: 1 } } ] } )
重要
ビュー定義はパブリックです。つまり、ビューに対する db.getCollectionInfos()
および explain
操作には、ビューを定義するパイプラインが含まれます。そのため、ビュー定義で機密性の高いフィールドと値を直接参照することは避けてください。
照合の指定
照合はコレクション レベルまたはビュー レベルで指定できます。たとえば、次の操作で照合を作成し、コレクションの照合を指定します(照合フィールドの説明については、照合ドキュメントを参照してください)。
db.runCommand ( { create: "myColl", collation: { locale: "fr" } });
この照合は、別の照合を明示的に指定しない限り、照合をサポートするインデックスと操作で使用されます。たとえば、次のドキュメントを myColl
に挿入します。
{ _id: 1, category: "café" } { _id: 2, category: "cafe" } { _id: 3, category: "cafE" }
次の操作はコレクションの照合を使用します。
db.myColl.find().sort( { category: 1 } )
この操作を実行すると、次の順序でドキュメントが返されます。
{ "_id" : 2, "category" : "cafe" } { "_id" : 3, "category" : "cafE" } { "_id" : 1, "category" : "café" }
単純なバイナリ照合(特定の照合が設定されていない)を使用するコレクションに対して同じ操作を実行すると、次の順序でドキュメントが返されます。
{ "_id" : 3, "category" : "cafE" } { "_id" : 2, "category" : "cafe" } { "_id" : 1, "category" : "café" }
ストレージエンジン オプションの指定
db.createCollection()
を使用してコレクションを作成するときに、コレクション固有のストレージ エンジン構成オプションを指定できます。次の操作を検討してください。
db.runCommand( { create: "users", storageEngine: { wiredTiger: { configString: "<option>=<setting>" } } } )
この操作では、users
stringMongoDBwiredTiger
により ストレージ エンジンに渡される特定の構成 を使用して、 という名前の新しいコレクションが作成されます。コレクション レベルのオプションに関する WiredTiger のドキュメントを wiredTiger
参照してください 特定の オプション用。