mongodb将数据存为BSON 文档格式,BSON 是json文档的二进制格式,但是比json支持更多数据类型,详见:bsonspec.org

1、数据结构

mongodb文档由键值对组成

{field1: value1,field2: value2,field3: value3,...fieldN: valueN
}

value可以是任意bson类型,如文档、数组、文档数组,如:

var mydoc = {_id: ObjectId("5099803df3f4948bd2f98391"),name: { first: "Alan", last: "Turing" },birth: new Date('Jun 23, 1912'),death: new Date('Jun 07, 1954'),contribs: [ "Turing machine", "Turing test", "Turingery" ],views : NumberLong(1250000)}

以上字段的类型分别是:

  • _id :ObjectId.
  • name:一份嵌入的文档,包含字段: first 、last.
  • birth 、death :Date 类型.
  • contribs :字符串数组.
  • views :NumberLong 类型.

字段名

字段名是字符串类型,有以下限制:

  • _id 保留作为主键; 取值在数据集中必须唯一, 不可修改, 除了数组可以是任意类型.
  • 不能有空字符.
  • 顶层字段名不能以($) 开头.(即便支持也不推荐)

bson文档可以有多个相同名称不同类型字段,但部分接口不支持,若需支持参考:driver documentation

字段值限制

数据集中被索引的字段有最大长度限制,详见:Maximum Index Key Length

2、点标识符

访问数组元素

"<数组名>.<0开头下标>"

如访问文档:

{...contribs: [ "Turing machine", "Turing test", "Turingery" ],...
}

访问contribs  数组第三个元素,可以用:

contribs.2

更多用法详见:

  • Query an Array
  • Query an Array of Embedded Documents

访问嵌入文档

访问嵌入文档的字段可以用:

"<文档名称>.<字段名>"

如访问文档:

{...name: { first: "Alan", last: "Turing" },contact: { phone: { type: "cell", number: "111-222-3333" } },...
}
  • 访问name字段信息中的last,可以用: "name.last".
  • 访问contact 字段信息中phone 文档的number ,可以用 "contact.phone.number".

更多用法详见:

  • Query on Embedded/Nested Documents
  • Query an Array of Embedded Documents

3、文档限制

文档大小限制

bson文档最大容量是:16MB,以此保证一份文档不超出内存或网络带宽;若要存放更大的文档详见:GridFS API.

文档字段顺序

mongodb根据写操作维护字段顺序,除了以下情况:

  • _id 字段永远排首位
  • 更新字段名会导致重排序

_id  字段

mongodb每份文档需要唯一的_id 作为主键,若插入文档时省略,则由mongodb自动分配  ObjectId

4、文档结构其他用法

查询详见:

  • Query Documents
  • Query on Embedded/Nested Documents
  • Query an Array
  • Query an Array of Embedded Documents

文档更新详见:

Update specifications.

转自:https://docs.mongodb.com/manual/core/document/

mongodb 基本概念:文档(Documents)相关推荐

  1. MongoDB基本概念学习 - 文档

    MongoDB的概念和关系型数据库概念的对应如下: 数据库对应数据库:表对应集合:行对应文档: mongodb的 文档 大体相当于关系数据库的行: MongoDB中,文档是一组键值(key-value ...

  2. mysql mongodb 事务_MySQL PK MongoDB:多文档事务支持,谁更友好?

    原标题:MySQL PK MongoDB:多文档事务支持,谁更友好? 作者介绍 贺春旸,凡普金科DBA团队负责人,<MySQL管理之道:性能调优.高可用与监控>第一.二版作者,曾任职于中国 ...

  3. spring mongodb内嵌文档查询

    spring mongodb内嵌文档查询 代码示例 简化写法 spring mongodb内嵌文档查询示例. {"name": "zsParent", &quo ...

  4. MongoDB内嵌文档查询

    MongoDB内嵌文档查询 示例数据结构 [{"name": "lisa", "age": 17,"friends": ...

  5. 文档(Documents), 字段(Fields), 及模式设计(Schema Design)

    1. 文档(Documents), 字段(Fields), 及模式设计(Schema Design) 1.1 概览 1.1.1 Solr的Schema文件 Solr在schema文件中存储它需要知道的 ...

  6. php mongodb _id,PHP库 查询Mongodb中的文档ID的方法

    在IBM我的一份新工作是一名开发的后勤人员.那意味着我的大部分时间是在和数据库打交道.在我的工作流程中,我花了一些时间在MongoDB上面--这是一个文档数据库.但是在通过ID来检索记录这个操作上面我 ...

  7. MongoDB内置文档查看和修改

    MongoDB设计的时候,有时候会设计内置文档,方便某个对象的统一.在这里略写了查看内置文档和更新内置文档. 1.查看  表为:realtimelogin   realName为:123 realpa ...

  8. 前端学习(1339):mongodb更新数据文档

    const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/playground', { useUnifie ...

  9. MongoDB之查询文档

    目录 文档查询 MongoDB 与 RDBMS Where 语句比较 MongoDB AND 条件 MongoDB OR 条件 AND 和 OR 联合使用 模糊查询 排序 分页 总条数 去重 指定返回 ...

  10. 分布式搜索引擎01-elasticsearch-介绍、倒排索引原理、概念(文档和字段,索引和映射)、安装、索引库crud、文档crud、RestAPI(java代码实现es的crud)

    文章目录 分布式搜索引擎01 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK技术栈 1.1.3.elasticse ...

最新文章

  1. OpenCV~PS效果
  2. A Comprehensive Analysis of Sequence Alignment Algorithms for LongRead Sequencing
  3. 解决写入InfluxDB时,报unbalanced quotes的问题
  4. 孔子绝粮于陈蔡子贡孔子问答节选(白话)
  5. ios微信支付失败 php,iOS 微信支付疑难杂症。
  6. C++标准转换运算符static_cast
  7. 力登:以智能化管理提升数据中心服务能力成熟度
  8. Maven的单元测试插件maven-surefire-plugin详解
  9. 电子数字计算机最早应用于哪个领域,2013计算机一级B考试模拟试题及答案(2)...
  10. WEB流程设计器 = jQuery + jsPlumb + Bootstrap
  11. 造车大军再添一员!消息称滴滴正式启动造车项目
  12. TIOBE 3 月编程语言排行榜出炉:Roblox 带飞 Lua,重回 TOP 20!
  13. 解决报错“No module named ‘pyLDAvis.gensim‘”
  14. temp的作用c语言,temp的使用
  15. linux 中gnu的含义是,GNU是什么意思
  16. 基于CNN的区域特定多尺度特征提取的两阶段停车位检测
  17. 口袋的天空(洛谷 P1195)
  18. 经纬度与墨卡托坐标转化
  19. 软件研发落地实践,要从设计就开始
  20. 磨金石教育摄影技能干货分享|有哪些让你难以忘怀的人文摄影照片

热门文章

  1. 刘帅西安电子计算机,2014年陕西自主招生选拔资格考生名单(12)
  2. HNUCM湖南中医药大学信息科学与工程学院第二届新生赛
  3. 最早截止时间优先即EDF算法
  4. teamviewer键盘不能远程输入
  5. 演艺O2O即将爆发,蛋糕如何分?
  6. 基于SSM的高校助学贷款申报审批系统
  7. Git剑客学习笔记-待完善
  8. vue2简单实现一个传送门的效果
  9. 小码农UU手把手教你云服务器搭建linux环境,还用什么虚拟机啊
  10. 泺水机器人吕梁店_一处清泉一座城,泺水之源自风流