MongoDB - 入门指南( 二 )

  • 不能以 system. 开头,该前缀为内部集合保留
  • 集合名称使用 . 字符可以创建子集合,用与区分不同组织集合 。虽然子集合没有任何特殊属性,但它们很有用,许多 MongoDB 工具整合了子集合 。
    文档文档是 MongoDB 中数据的基本存储单元,以一种叫作 BSON 的文档结构表示 。
    文档中的键值对是有序的,不同序则是不同文档 。并且键是区分大小写的,否则也为不同文档 。
    文档的键是字符串,而值除了字符串,还可以是 IntLongDoubleBoolean、数组、嵌入文档等多种类型 。
    每个文档都有一个默认的 _id 键,它相当于关系型数据库中的主键,这个键的值在同一个集合中必须是唯一的 。
    _id 键的值默认是 ObjectId 类型,在插入文档的时候,如果用户不设置文档的 _id 值的话,MongoDB 会自动生成一个唯一的 ObjectId 值进行填充 。
    数据库文件MongoDB 在 3.2 版本已经将 WiredTiger 作为默认的存储引擎 。其作为存储引擎的时候,数据库会有以下存储文件:
    • collection-*.wt: 存储集合的数据
    • index-*.wt: 存储索引的数据
    • WiredTiger: 存储基本配置信息
    • WiredTiger.wt: 存储所有其他集合的元数据信息
    • WiredTiger.lock: 存储进程 ID,用于防止多个进程连接同一个 WiredTiger 数据库
    • WiredTiger.turtle: 存储 WiredTiger.wt 的元数据信息
    • journal: 存储数据库的写日志
    命令行工具MongoDB 提供的 mongosh 是一个 JavaScript 的 shell,其提供了许多高级功能和自定义功能 。
    使用技巧对于 MongoDB 提供的功能,shell 内置了帮助文档,可以输入 help 命令进行访问,使用 db.help() 可以查看数据库级别的帮助文档,使用 db.foo.help() 可以查看集合级别的帮助文档 。
    在 shell 中使用函数之前,在不使用括号的情况下输入函数名,这样会打印出函数的源代码,这是一个可以查看函数具体行为的好方法 。
    执行脚本shell 不止可以直接执行 JavaScript 的脚本代码,还可以用于执行 JavaScript 的脚本文件,简单执行 mongo script.js 即可 。
    【MongoDB - 入门指南】如果已经进入到 shell 中,可以使用 load() 函数加载 JavaScript 脚本文件 。
    创建 .mongorc.js 文件对于需要频繁被加载的脚本,可以将它们添加到 .mongorc.js 中,此文件会在启动 shell 时自动运行 。
    在更实际一些的场景中,使用此脚本可以设置全局变量,或者为长名称设置一个简短的别名,也可以重写内置函数 。
    定制提示信息通过将 prompt 变量设置为一个字符串或函数,可以重写默认的 shell 提示,如下示例:
    prompt = function() {if (typeof db == 'undefined') {return '(nodb)> ';}// 检查最后的数据库操作try {db.runCommand({getLastError: 1});} catch (e) {print(e);}return db+"> ";};提示函数应该返回一个字符串,通常应该包含对 getLastError 的调用,这样可以捕获输入时的错误,并在 shell 断开连接时自动重新连接 。
    编辑复杂变量使用 shell 时,编辑多行的时候不能再编辑前面的行,这对于较大的代码块或对象非常不友好 。
    为此,可以在 shell 中设置 EDITOR 变量,则可以使用 edit varname 的方式编辑一个变量,完成更改后只需保存并退出编辑器,变量将被重新解析并加载回 shell 中 。
    不便使用的集合名称大多数情况下可以使用

    经验总结扩展阅读