db.createCollection()

定义

db.createCollection(name, options)

显式地创建一个新的集合

因为 MongodbDB 在第一次引用时会隐式地创建这个 collection。这个方法主要是使用指定的 options 创建一个新的 collection。例如,你使用 db.createCollection() 创建一个 capped collection 或者创建一个新的集合 document validation

什么是 capped collection ?
一个固定大小的集合,自动覆盖最早的条目时达到最大值。

什么是 document validation ?
创建一个对更新和插入都会进行验证的集合,若校验通过则执行,反之抛出异常

下面的是这个方法的原型

db.createCollection(<name>, { capped: <boolean>,
                              autoIndexId: <boolean>,
                              size: <number>,
                              max: <number>,
                              storageEngine: <document>,
                              validator: <document>,
                              validationLevel: <string>,
                              validationAction: <string>,
                              indexOptionDefaults: <document> } )

下面是参数

参数类型描述
namestring创建集合的名称
optionsdocument可选的。创建一个 capped collection 或预先分配存储空间的 collection 的配置选项 。

Examples

创建一个固定集合

固定集合有最大存储大小或文档数量,防止超出最大限制。所有固定集合必须指定一个最大存储大小也可以指定一个最大文档数量。如果 collection 达到最大存储大小限制之前达到最大文档数量 mongodb 会删除旧文档。

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

这个命令创建名字为“log”,最大存储空间为 5m,最多 5000 个文档的集合

下面命令只是预先分配最大存储空间为 2G,不是固定大小的 people 集合

db.createCollection("people", { size: 2147483648 } )

详情请查看 Capped Collections

创建一个文档验证集合

建立新的 collection 并设置 validation。
指定 contact 表的 phone 字段只能是string,或者email必须匹配如下规则,或者 status 必须为 Unkown或者 Incomplete

db.createCollection( "contacts", {
       validator: { $or:
          [
             { phone: { $type: "string" } },
             { email: { $regex: /@mongodb\.com$/ } },
             { status: { $in: [ "Unknown", "Incomplete" ] } }
          ]
       }
    } )

这时候做这样的插入:

db.contacts.insert( { name: "xyz", status: "A" } )

返回是:

WriteResult({
       "nInserted" : 0,
       "writeError" : {
          "code" : 121,
          "errmsg" : "Document failed validation"
       }
    })

该特性是从 3.2 版本开始的,mongodb支持在insert 和update的时候validate documents了。(Validation rules are specified on a per-collection basis)有这3个参数:
- validator
- validationLevel:有off,strict,moderate级别(默认strict)
- validationAction:有error和warn(默认error)

可以通过db.createCollection()和collMod来设定。
使用 query operators 指定表达式
ps:这类操作不支持¥near, ¥ nearSphere, ¥ text, ¥where。¥ 换为美元符
为已有collection建立validation

```
db.runCommand( {
   collMod: "contacts",
   validator: { $or: [ { phone: { $exists: true } }, { email: { $exists: true } } ] }
} )
```

- 查看表的 validation 规则

```
db.getCollectionInfos( { name: "contacts" } )
```
- validation的限制:
 不能对admin,local和config database的表做validation
 不能对system.*表做validation

详情请查看 Document Validation

创建一个指定存储引擎的集合

当你使用 db.createCollection() 创建一个集合时,您可以指定与特定集合有关存储引擎配置选项

db.createCollection(
   "users",
   { storageEngine: { wiredTiger: { configString: "<option>=<setting>" } } }
)

此创建创建一个名为“users”指定存储引擎为 wiredTiger 的集合。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值