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 }
});
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: "整数である必要があり、必須項目です"
}
}
}}
});
validator: { $jsonSchema: {
bsonType: "object",
required: ["name", "age"],
properties: {
name: {
bsonType: "string",
description: "文字列である必要があり、必須項目です"
},
age: {
bsonType: "int",
minimum: 0,
description: "整数である必要があり、必須項目です"
}
}
}}
});