MongoDB 创建集合

MongoDB 中使用 createCollection() 方法来创建集合。

语法格式:

复制代码
db.createCollection(name, options)

参数说明:

  • name: 要创建的集合名称。
  • options: 可选参数, 指定有关内存大小及索引的选项。

options 可以是如下参数:

参数名 类型 描述 示例值
capped 布尔值 是否创建一个固定大小的集合。 true
size 数值 集合的最大大小(以字节为单位)。仅在 capped 为 true 时有效。 10485760 (10MB)
max 数值 集合中允许的最大文档数。仅在 capped 为 true 时有效。 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 个文档。
  • 文档必须包含 nameemail 字段,其中 name 必须是字符串,email 必须是有效的电子邮件格式。
  • 验证级别为严格,验证失败将阻止插入或更新。
  • 使用 WiredTiger 存储引擎,指定块压缩器为 zstd。
  • 默认使用英语排序规则。

实例

在 test 数据库中创建 runoob 集合:

复制代码
> use test
switched to db test
> db.createCollection("runoob")
{ "ok" : 1 }
>

如果要查看已有集合,可以使用 show collections 或 show tables 命令:

复制代码
> show collections
runoob
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: "必须为整数且为必填项"

}

}

}}

});

相关推荐
戒不掉的伤怀14 分钟前
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
服务器·数据库·mysql
cv高级工程师YKY19 分钟前
服务器 - - QPS与TPS介绍
数据库
nbsaas-boot27 分钟前
高可扩展属性建模设计:架构师的全局思考与落地方案
数据库
爱上语文1 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
陈敬雷-充电了么-CEO兼CTO2 小时前
推荐算法系统系列>推荐数据仓库集市的ETL数据处理
大数据·数据库·数据仓库·数据挖掘·数据分析·etl·推荐算法
MeshddY2 小时前
(超详细)数据库项目初体验:使用C语言连接数据库完成短地址服务(本地运行版)
c语言·数据库·单片机
wuxinyan1232 小时前
Java面试题033:一文深入了解MySQL(5)
java·数据库·mysql·面试
萧曵 丶2 小时前
Spring @TransactionalEventListener
java·数据库·spring·事务·transactional·异步
胡斌附体2 小时前
mobaxterm终端sqlplus乱码问题解决
数据库·乱码·sqlplus·字符集设置
moon66sun2 小时前
开源项目XYZ.ESB:数据库到数据库(DB->DB)集成
数据库·esb