MongoDB コレクションの作成

この章では、MongoDB を使用してコレクションを作成する方法を紹介します。

MongoDB では、createCollection()メソッドを使用してコレクションを作成します。

構文形式:

db.createCollection(name, options)

パラメータの説明:

  • name: 作成するコレクションの名前。
  • options: オプションのパラメータで、メモリサイズとインデックスに関するオプションを指定します。

options には、次のパラメータを指定できます:

パラメータ名型説明サンプル値
cappedブール値固定サイズのコレクションを作成するかどうか。true
size数値コレクションの最大サイズ(バイト単位)。cappedtrue の場合にのみ有効です。10485760 (10MB)
max数値コレクション内で許可される最大ドキュメント数。cappedtrue の場合にのみ有効です。5000
validatorオブジェクトドキュメント検証に使用する式。{ $jsonSchema: { ... }}
validationLevel文字列ドキュメント検証の厳格さを指定します。
"off":検証を行いません。
"strict":挿入および更新操作はすべて検証に合格する必要があります(デフォルト)。
"moderate":既存のドキュメントを更新する場合のみ検証に合格する必要があり、新しいドキュメントを挿入する場合は不要です。
"strict"
validationAction文字列ドキュメント検証が失敗した場合の操作を指定します。
"error":挿入または更新をブロックします(デフォルト)。
"warn":挿入または更新を許可しますが、警告を発行します。
"error"
storageEngineオブジェクトコレクションにストレージエンジンの設定を指定します。{ wiredTiger: { ... }}
collationオブジェクトコレクションのデフォルトの照合順序を指定します。{ locale: "en", strength: 2 }

ドキュメントを挿入するとき、MongoDB は最初に固定サイズのコレクションの size フィールドをチェックし、次に max フィールドをチェックします。

これらのオプションを使用してコレクションを作成する例:

例

db.createCollection("myComplexCollection", {
  capped: true,
  size: 10485760,
  max: 5000,
  validator: { $jsonSchema: {
    bsonType: "object",
    required: ["name", "email"],
    properties: {
      name: {
        bsonType: "string",
        description: "文字列である必要があり、必須項目です"
      },
      email: {
        bsonType: "string",
        pattern: "^.+@.+$",
        description: "有効なメールアドレスである必要があります"
      }
    }
  }},
  validationLevel: "strict",
  validationAction: "error",
  storageEngine: {
    wiredTiger: { configString: "block_compressor=zstd" }
  },
  collation: { locale: "en", strength: 2 }
});

この例では、次の特性を持つコレクションを作成します:

  • 固定サイズで、最大 10MB、最大 5000 個のドキュメントを格納できます。
  • ドキュメントには、必ずnameとemailフィールドが含まれており、そのうちnameは文字列である必要があり、emailは有効なメールアドレスの形式である必要があります。
  • 検証レベルは strict で、検証に失敗した場合は挿入または更新がブロックされます。
  • WiredTiger ストレージエンジンを使用し、ブロック圧縮アルゴリズムに zstd を指定します。
  • デフォルトでは英語の照合順序を使用します。

例

test データベースに サンプル コレクションを作成します:

> use test
switched to db test
> db.createCollection("サンプル")
{ "ok" : 1 }
>

既存のコレクションを確認するには、次を使用できますshow collections 或 show tablesコマンド:

> show collections
サンプル
system.indexes

以下は、いくつかの主要なパラメータを指定した createCollection() の使用法です:

固定サイズのコレクションを作成します。最大サイズは 5MB(5242880 バイト)で、最大 5000 個のドキュメントを格納できます。

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

MongoDB では、コレクションを作成する必要はありません。ドキュメントを挿入すると、MongoDB が自動的にコレクションを作成します。

> db.mycol2.insert({"name" : "サンプル"})
> show collections
mycol2
...

最大サイズが 1MB(1048576 バイト)の固定サイズコレクションを作成します:

db.createCollection("myCappedCollection", { capped: true, size: 1048576 });

次の例では、myCollection コレクションにバリデーターを作成します。ドキュメントには name と age フィールドが必須であり、name は文字列、age は非負の整数である必要があります。

例

db.createCollection("myCollection", {
  validator: { $jsonSchema: {
    bsonType: "object",
    required: ["name", "age"],
    properties: {
      name: {
        bsonType: "string",
        description: "文字列である必要があり、必須項目です"
      },
      age: {
        bsonType: "int",
        minimum: 0,
        description: "整数である必要があり、必須項目です"
      }
    }
  }}
});
その他の拡張