Docs Menu
Docs Home
/
MongoDB マニュアル
/ / /

db.createCollection()

項目一覧

  • 定義
  • 互換性
  • 構文
  • アクセス制御
  • 動作
db.createCollection(name, options)

新しいコレクションまたはビューを作成します。 ビューについては、 db.createView()も参照してください。

MongoDB はコレクションがコマンドで最初に参照されたときに暗黙的にコレクションを作成するため、このメソッドは主に特定のオプションを使用する新しいコレクションを作成するために使用されます。 たとえば、 db.createCollection()を使用してCapped コレクションを作成し、ドキュメント検証を使用する新しいコレクションを作成します。

db.createCollection()はデータベースコマンドcreateを囲んでいるラッパーです。

次の環境でホストされる配置には db.createCollection() を使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

db.createCollection() メソッドには次のプロトタイプ形式があります。

db.createCollection( <name>,
{
capped: <boolean>,
timeseries: { // Added in MongoDB 5.0
timeField: <string>, // required for time series collections
metaField: <string>,
granularity: <string>
},
expireAfterSeconds: <number>,
clusteredIndex: <document>, // Added in MongoDB 5.3
changeStreamPreAndPostImages: <document>, // Added in MongoDB 6.0
size: <number>,
max: <number>,
storageEngine: <document>,
validator: <document>,
validationLevel: <string>,
validationAction: <string>,
indexOptionDefaults: <document>,
viewOn: <string>,
pipeline: <pipeline>,
collation: <document>,
writeConcern: <document>
}
)

db.createCollection() メソッドには次のパラメーターがあります。

Parameter
タイプ
説明
name
string
作成するコレクションの名前。詳細は、「命名制限」を参照してください。
options
ドキュメント

任意。次の要素を作成するための構成オプションです。

  • 上限付きコレクション

  • クラスター化されたコレクション

  • ビュー

options ドキュメントには、次のフィールドが含まれています。

フィールド
タイプ
説明
capped
ブール値
任意。上限付きコレクションを作成するには、true と指定します。true と指定する場合、size フィールドに最大サイズを設定する必要もあります。
timeseries.timeField
string
必須(時系列コレクションの作成時)。各時系列ドキュメントの日付を含むフィールドの名前です。時系列コレクション内のドキュメントには、timeField の値として有効な BSON 日付が必要です。
timeseries.metaField
string

オプション。各時系列ドキュメントのメタデータを含むフィールドの名前。指定されたフィールドのメタデータは、ユニークな一連のドキュメントにラベルを付けるために使用されるデータでなければなりません。メタデータは、変更されることはほとんどありません。

指定フィールドの名前を _id にすることはできません。また、timeseries.timeField と同じにすることもできません。フィールドは配列以外のすべてのタイプに設定できます。

timeseries.granularity
string

任意。bucketRoundingSecondsbucketMaxSpanSeconds を設定する場合は使用しないでください。指定できる値は、seconds(デフォルト)、minuteshours です。

granularity を、連続する受信タイムスタンプ間の時間に最も近い値に設定します。これにより、MongoDB がコレクションの内部にデータを保存する方法が最適化され、パフォーマンスが向上します。

粒度とバケット間隔の詳細については、「時系列データの粒度の設定」を参照してください。

expireAfterSeconds
数値

任意。 時系列コレクションのドキュメントが期限切れになる秒数を指定します。 MongoDB によって期限切れのドキュメントが自動的に削除されます。

size
数値
任意。上限付きコレクションの最大サイズをバイト単位で指定します。MongoDB は、上限付きコレクションが最大サイズに達すると、古いドキュメントを削除して新しいドキュメント用スペースを確保します。size フィールドは、上限付きコレクションに必須であり、他のコレクションでは無視されます。
max
数値
任意。上限付きコレクションで許可されるドキュメントの最大数。size の制限がこの制限よりも優先されます。上限付きコレクションがドキュメントの最大数に達する前に size の制限に達した場合、MongoDB は古いドキュメントを削除します。max 制限の使用を優先する場合は、上限付きコレクションに必要な size 制限をドキュメントの最大数を十分に超える値に設定してください。
storageEngine
ドキュメント

任意。WiredTiger ストレージエンジンでのみ使用できます。

コレクション作成時に、ユーザーがコレクションごとにストレージエンジンの構成を指定できるようにします。storageEngine オプションの値は、次の形式になります。

{ <storage-engine-name>: <options> }

コレクション作成時に指定されたストレージエンジンの設定は、レプリカセット内で異なるストレージエンジンを使用するノードをサポートするために、複製中に oplog に検証され、ログが記録されます。

Tip

以下も参照してください。

validator
ドキュメント

任意。ユーザーがコレクションの検証ルールまたは式を指定できるようにします。

validator オプションは、検証ルールまたは式を指定するドキュメントを受け取ります。クエリ演算子と同じ演算子を使用して式を指定できます。ただし、$near$nearSphere$text$where は対象外です。

スキーマ検証を使用してコレクションを作成する方法については、「 JSON schema 」を参照してください。

validationLevel
string

任意。更新中に MongoDB が既存のドキュメントに検証ルールをどの程度厳密に適用するかを決定します。

validationLevel
説明
"off"
挿入またはアップデートの検証は行われません。
"strict"
デフォルト すべての挿入とすべてのアップデートに検証ルールを適用します。
"moderate"
既存の有効なドキュメントの挿入とアップデートに検証ルールを適用します。既存の無効なドキュメントのアップデートにはルールは適用しません。
validationAction
string

任意。無効なドキュメントで error を発行するか、違反に関する warn のみに留め、無効なドキュメントを挿入できるようにするかを指定します。

重要

ドキュメントの検証は、validationLevel によって決定されたドキュメントにのみ適用されます。

indexOptionDefaults
ドキュメント

任意。ユーザーがコレクションの作成時にインデックスのデフォルト構成を指定できるようにします。

indexOptionDefaults オプションは、次の形式をとる storageEngine ドキュメントを受け入れます。

{ <storage-engine-name>: <options> }

インデックスの作成時に指定されたストレージエンジン構成は、異なるストレージエンジンを使用するノードのあるレプリカセットをサポートするために、レプリケーション中に検証され、oplog に記録されます。

viewOn
string
ビューの作成元となるコレクションまたはビューの名前。詳細については、「db.createView()」を参照してください。
pipeline
配列
集計パイプラインステージで構成される配列。db.createView() は、指定された pipelineviewOn コレクションまたはビューに適用してビューを作成します。詳細については、「db.createView()」を参照してください。
collation
ドキュメント

コレクションにデフォルトの照合を指定します。

照合を指定すると、大文字・小文字やアクセント記号など、文字列を比較するための言語独自のルールを指定できます。

照合オプションの構文は次のとおりです。

collation: {
locale: <string>,
caseLevel: <boolean>,
caseFirst: <string>,
strength: <int>,
numericOrdering: <boolean>,
alternate: <string>,
maxVariable: <string>,
backwards: <boolean>
}

照合を指定する場合、locale フィールドは必須ですが、その他の照合フィールドはすべてオプションです。フィールドの説明については、照合ドキュメントを参照してください。

コレクション・レベルで照合を指定すると、次の効果が生じます。

  • インデックス作成操作で別の照合順序を明示的に指定しない限り、そのコレクションのインデックスはその照合順序で作成されます。

  • そのコレクションに対する操作では、明示的に別の照合順序を指定しない限り、コレクションのデフォルトの照合順序が使用されます。

    1 つの操作に複数の照合は指定できません。たとえば、フィールドごとに異なる照合を指定できません。また、ソートと検索を一度に実行する場合、検索とソートで別の照合を使用できません。

コレクションにも操作にも照合が指定されていない場合、MongoDB では以前のバージョンで使用されていた単純なバイナリ比較によって文字列が比較されます。

コレクションに照合を指定できるのは、コレクションの作成時のみです。コレクションのデフォルトの照合は、一度設定すると変更できません。

例については、「照合の指定 」を参照してください。

writeConcern
ドキュメント

任意。操作の書込み保証(write concern)を表現するドキュメント。デフォルトの書込み保証を使用する場合は省略します。

シャーディングされたクラスターで発行すると、mongos は コマンドとそのヘルパーcreatedb.createCollection() 書込み 保証を"majority" に変換します。

配置で認証/承認が強制される場合、 db.createCollection()には次の特権が必要です。

タスク
必要な特権
上限のないコレクションの作成

データベース上の createCollectionまたは

insert 作成するコレクション上に

convertToCapped (コレクション用)

createCollection (データベース上)

ビューの作成

createCollection (データベース上)。

ただし、ユーザーがデータベースに対してcreateCollection権限を持ち、かつ、作成するビューに対してfind権限を持っている場合には、ユーザーには次の追加の権限必要です。

  • find ソース コレクションまたはビュー。

  • pipelineで参照されている他のコレクションまたはビュー(存在する場合)に対するfind

データベースに対して readWrite 組み込みロールを持つユーザーは、リスト内の操作を実行するために必要な権限があります。必要なロールを持つユーザーを作成するか、既存ユーザーにロールを付与してください。

バージョン 4.2 で変更

db.createCollection()は、操作中、指定されたコレクションまたはビューに対する排他ロックを取得します。 コレクションに対する後続のすべての操作は、 db.createCollection()がロックを解放するまで待機する必要があります。 db.createCollection()は通常、このロックを短時間保持します。

ビューを作成するには、データベース内の system.views コレクションに対する追加の排他ロックを取得する必要があります。このロックは、コマンドが完了するまでデータベース内のビューの作成または変更をブロックします。

MongoDB 4.2より前は、 db.createCollection()は親データベースに対して排他ロックを取得し、操作が完了するまでデータベースそのコレクションに対するすべての操作をブロックします。

バージョン 4.4 で変更

トランザクションがクロスシャード間書込みトランザクション(write transaction)でない場合に、分散トランザクション内にコレクションとインデックスを作成できます。

トランザクションで db.createCollection() を使用するには、そのトランザクションで読み取り保証(read concern)"local" を使用する必要があります。読み取り保証レベルを "local" 以外に指定すると、トランザクションは失敗します。

上限付きコレクションには最大サイズまたはドキュメント数が設定されているため、最大しきい値を超えて増えることはありません。すべての上限付きコレクションでは最大サイズを指定する必要があり、最大ドキュメント数も指定できます。MongoDB は、コレクションが最大ドキュメント数に達する前に最大サイズ制限に達した場合、古いドキュメントを削除します。次の例で考えてみましょう。

db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )

このコマンドは、最大サイズが 5 メガバイトで、最大ドキュメント数が 5000 の「log」という名前のコレクションを作成します。

上限付きコレクションの詳細については、「上限付きコレクション」を参照してください。

過去 24 時間の気象データを取得する時系列コレクションを作成するには、次のコマンドを実行します。

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "data",
granularity: "hours"
},
expireAfterSeconds: 86400
}
)

検証機能付きのコレクションは、挿入またはアップデートされた各ドキュメントをvalidatorオプションで指定された基準と比較します。 validationLevelvalidationActionに応じて、指定された条件を満たさない場合、MongoDB は警告を返すか、ドキュメントの挿入または更新を拒否します。

次の例では、JSON schema バリデーターを使用してcontactsコレクションを作成します。

db.createCollection( "contacts", {
validator: { $jsonSchema: {
bsonType: "object",
required: [ "phone" ],
properties: {
phone: {
bsonType: "string",
description: "must be a string and is required"
},
email: {
bsonType : "string",
pattern : "@mongodb\.com$",
description: "must be a string and match the regular expression pattern"
},
status: {
enum: [ "Unknown", "Incomplete" ],
description: "can only be one of the enum values"
}
}
} }
} )

バリデーターが設定されている場合、次の挿入操作は検証に失敗します。

db.contacts.insertOne( { name: "Amanda", status: "Updated" } )

このメソッドは、次のエラーを返します。

Uncaught:
MongoServerError: Document failed validation
Additional information: {
failingDocumentId: ObjectId("61a8f4847a818411619e952e"),
details: {
operatorName: '$jsonSchema',
schemaRulesNotSatisfied: [
{
operatorName: 'properties',
propertiesNotSatisfied: [
{
propertyName: 'status',
description: 'can only be one of the enum values',
details: [ [Object] ]
}
]
},
{
operatorName: 'required',
specifiedAs: { required: [ 'phone' ] },
missingProperties: [ 'phone' ]
}
]
}
}

コレクションの検証仕様を表示するには、 db.getCollectionInfos()を使用します。

Tip

以下も参照してください。

バージョン 3.4 で追加

照合を指定すると、大文字・小文字やアクセント記号など、文字列を比較するための言語独自のルールを指定できます。

照合はコレクション レベルまたはビュー レベルで指定できます。たとえば、次の操作で照合を作成し、コレクションの照合を指定します(照合フィールドの説明については、照合ドキュメントを参照してください)。

db.createCollection( "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.createCollection(
"users",
{ storageEngine: { wiredTiger: { configString: "<option>=<setting>" } } }
)

この操作では、MongoDB がwiredTiger ストレージエンジンに渡す特定の構成文字列を使用して、users という名前の新しいコレクションが作成されます。

たとえば、users コレクション内のファイル ブロックに zlib コンプレッサーを指定するには、次のコマンドで block_compressor オプションを設定します。

db.createCollection(
"users",
{ storageEngine: { wiredTiger: { configString: "block_compressor=zlib" } } }
)

戻る

db.commandHelp