更新时间:2022-06-21 GMT+08:00

创建和管理集合

写入/更新和删除命令的规范请参见写入/更新命令删除命令

创建集合

  1. 执行db.createCollection(name, options)创建集合。

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

    表1 参数说明

    字段

    类型

    说明

    apped

    boolean

    可选的,如果要创建一个固定集合,该值为true,如果该值为ture,需要同时设置size字段。

    autoIndexId

    boolean

    如果指定为false,表示禁止自动在_id字段创建索引。

    size

    number

    可选,对于固定集合,指定集合的最大大小。

    max

    number

    可选,对于固定集合,指定集合存储的最大的文档数。

    更多详细参数说明请参考官方文档

    回显信息如下表示创建成功。

    { "ok" : 1 }

  2. 为集合中插入一条数据。

    db.coll.insert({"name": "sample"})

  3. 查看已有集合。

    show collections

  4. 删除集合。

    db.coll.drop()

创建固定集合

固定集合是指那些集合的大小或者文档数有最大值,方式集合的大小超过特定值,当集合的大小或者数量超过最大值后,集合的最早存储的值会被自动删除掉。

如下命令创建了一个集合,最大值是5MB,文档数量最多为5000。

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

创建分片集合

在DDS集群架构中,可以创建分片来充分利用数据库性能。创建分片的规范及建议请参见分片设计规范

  1. 使数据库可分片。

    sh.enableSharding("info")

  2. 创建分片表,并指定分片键。如下为info数据库的fruit集合分片,且分片键是"id"。

    sh.shardCollection("info.fruit", {"_id": "hashed"})

    DDS分片集群支持两种分片策略:

    • 范围分片,支持基于Shard Key的范围查询。
    • 哈希分片,能够将写入均衡分布到各个Shard。

删除集合

执行db.collection_name.drop()删除集合。