主页

索引

模块索引

搜索页面

表(集合)相关

警告

Collection不需要明确创建,新增一条记录自动创建

明确创建表:

db.createCollection(name, options)
说明:
    name: 要创建的集合名称
    options: 可选参数,指定有关内存大小及索引的选项

options 可以是如下参数:
    字段  类型  描述
    1. capped  布尔  (可选)
        如果为 true,则创建固定集合。
        固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。
        当该值为 true 时,必须指定 size 参数。
    2. autoIndexId 布尔  3.2 之后不再支持该参数。(可选)
        如为 true,自动在 _id 字段创建索引。默认为 false。
    3. size    数值  (可选)
        为固定集合指定一个最大值,即字节数。
        如果 capped 为 true,也需要指定该字段。
    4. max 数值  (可选)
        指定固定集合中包含文档的最大数量。


示例:
    $ db.createCollection("runoob")
    $ db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )

表的使用:

// 特殊表名使用
db.getCollection("3 test").find()
db.getCollection("3-test").find()
db.getCollection("stats").find()

//To format the printed result, you can add the.pretty()
db.myCollection.find().pretty()

print()
print(tojson(<obj>))
printjson()

删除表(集合):

db.collection.drop()

固定集合 Capped Collections

事先创建固定大小的集合:

db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )
​
capped:是否固定
size:集合大小,单位KB
max:文档数量

判断是否为固定集合:

db.log.isCapped();

将已存在的集合转为固定集合:

db.runCommand({"convertToCapped":"log",size:10000})

排序:

db.log.find().sort( { $natural: -1 } )

特性:

类似环形队列,如果空间不足,会把老数据删除,为新的数据提供空间;
当指定文档数量上限时,必须同时指定大小;
淘汰机制只有在容量还没有满时才会依据文档数量来工作;
要是容量满了,淘汰机制会依据容量来工作;

优点:

写入速度提升
    固定集合中的数据被顺序写入磁盘上的固定空间,不会因为其他集合的一些随机性的写操作而“中断”
    其写入速度非常快(不建立索引,性能更好);

固定集合会自动覆盖掉最老的文档
    因此不需要再配置额外的工作来进行旧文档删除。
    设置Job进行旧文档的定时删除容易形成性能的压力毛刺;

按照插入顺序的查询输出速度极快;
能够在插入最新数据时,淘汰最早的数据;
固定集合非常实用与记录日志等场景;

缺点:

固定集合创建之后就不可以改变,只能将其删除重建(不安全);

创建固定集合,为固定集合指定文档数量,必须同时指定固定集合的大小,不管先达到哪一个限制,之后插入的新文档都会把最老的文档移除集合;

用convertToCapped将普通集合转换固定集合时:
⚠️原有索引会丢失,需手动创建
并且此转换命令没有限制文档数量的参数;
普通集合可以使用convertToCapped转换固定集合,但固定集合不可以转换为普通集合;

⚠️不可以对固定集合进行分片。

对固定集合中的文档可以进行更新操作,但更新不能导致文档的Size增长或缩小,否则更新失败:
    如果要更新这个一个key 对应的value,更新后的值也必须为100个字节,大于100个字节不可以,小于100个字节也不可以。

不可以对固定集合执行删除文档操作,只能删除整个集合。

对集合估算size时,不要依据集合的storageSize ,而是依据集合的size。
storageSize是wiredTiger存储引擎采用高压缩算法压缩后的

主页

索引

模块索引

搜索页面