当前位置: 首页 > article >正文

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 个文档。
  • 文档必须包含 name 和 email 字段,其中 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: "必须为整数且为必填项"
      }
    }
  }}
});


http://www.kler.cn/a/514936.html

相关文章:

  • 5G网络下移动机器人的图像和指令传输用于远程操作
  • LabVIEW 水电站厂内经济运行系统
  • OneData体系架构详解
  • 大华大数据开发面试题及参考答案
  • 用JAVA写算法之输入输出篇
  • Element中为什么不使用prop重置无法生效
  • AIGC视频生成模型:慕尼黑大学、NVIDIA等的Video LDMs模型
  • 大语言模型之prompt工程
  • pytest执行报错:found no collectors
  • 单片机基础模块学习——定时器
  • Java菜鸟养成计划(java基础)--java运算符
  • import.meta.globEager详解
  • k8s基础(7)—Kubernetes-Secret
  • YOLOv10改进 | YOLOv10引入AKConv(轻量)
  • YOLO 安装 并且命令行指定配置文件
  • 文件快递柜:匿名口令分享工具,轻松安全地存取文本与文件
  • Centos 修改历史读录( HISTSIZE)
  • 力扣-数组-414 第三大的数
  • 蓝桥杯备考:红黑树与map和set
  • 【Block总结】PConv风车卷积,更大的感受野,提高特征提取能力|即插即用
  • K8S中Service详解(一)
  • gesp(C++五级)(14)洛谷:B4071:[GESP202412 五级] 武器强化
  • docker安装elk6.7.1-搜集nginx-json日志
  • docker安装elk6.7.1-搜集java日志
  • SparkSQL函数综合实践
  • jinja2.exceptions.UndefinedError: ‘enumerate‘ is undefined