(2) MongoDB基本概念及与关系型数据库的对照

MongoDB不是关系型数据库,因此也就没有了表,行等概念,但是有一些类似的概念,主要有 数据库(Database),集合(Collection),文档(Document),其中数据库跟关系型数据库的数据库是一个概念,集合相当于表,文档相当于行。下面分别来介绍这些概念。

 

1. 文档:

文档是MongoDB的核心概念,也是MongoDB种数据的基本单元。所谓文档就是多个键及其关联的值有序的放置在一起。如,

{"greeting":"Hello World!"}

在这个文档中,"greeting"是键,"Hello World!"是值

当然,绝大多数的文档包含多个键/值,比这个要复杂的多,如:

{"author":"Tian","Sex":"M","hobby":"MBK"}

甚至文档里面还包含文档。

 

1.1 文档的键的命名规则

1). 文档的键是字符串;

2). 键不能包含有\0(空字符),这个字符用来表示键的结尾;

3). $和.有特殊的含义,被保留了;

4). 以下划线"_"的键被保留了,虽然这个并不是严格的要求。

5). 文档的键不能重复

6). 区分大小写,如{"author":"tian"}和{"Author":"tian"}是不一样的

 

2. 集合

集合,指的是一组文档。

MongoDB的集合虽然类似于关系数据库的表,但是,集合是无模式的,不必像关系数据库的表那样,必须事先定义,并且结构固定。

我们可以将以下2个文档存到同一个集合中:

{"author":"tian"}

{"age":6}

这两个文档,键不一样,对应的值也不一样,甚至类型也不一样,而这在关系数据库中是不可想象的。

 

2.1 集合的命名

1). 集合名不能是空字符串""

2). 集合名不能含有\0(空字符),这个字符是集合名的结尾

3). 集合名不能以"system."开头,以"system."开头表示系统集合,如system.users这个集合保留数据库用户的信息,system.namespaces这个集合保存数据库所有集合的信息

4). 用户创建的集合名字不能含有保留字符$

 

2.2 子集合

我们可以通过"."字符分开的按命名空间划分的子集合来组织集合。如,一个带有博客功能的应用可能包含2个集合blog.authors和blog.posts,这样做的目的只是为了组织更好,事实上, 我们不一定存在blog这个集合的。

 

3. 数据库

多个集合组成数据库。一个MongoDB实例可以包含多个数据库,他们之间可以视为完全独立。

 

3.1 数据库命名

1). 不能是空字符串;

2). 不能含有空格、.、$、/、\、和\0;

3). 应全部小写;

4). 最多64字节;

5). 不能是保留的数据库名:admin,local,config

 

参考:MongoDB权威指南

转载于:https://www.cnblogs.com/tian2010/archive/2012/07/17/2596459.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CorelDRAW X7 X8 2017 2018是什么关系?

从CorelDRAW 2017版本开始我们叫习惯了的X几系列的CorelDRAW毅然决然的就换了称呼,所以有时候很多朋友对于软件版本,经常会傻傻分不清,还有人认为X8版本比2017版本高,究竟为什么会这么认为呢? “帮我转个X8吧”。 “我…

阮一峰 《ECMAScript 6 入门》:let 和 const 命令

以下内容全文出自 阮一峰的书: 《ECMAScript 6 入门》 电子版地址:ES 6标准入门(第3版) let 命令 基本用法 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令…

离合器半联动

半联动即离合器半联动。 离合器半联动是指离合器不稳定联接的工作状态,即驾驶员踩离合器踏板,使离合器压板压力逐步减小,造成主动盘与从动盘之间处于边转边滑的状态。在场内驾驶考试时,驾驶员由于操作不熟练,不能在要求…

学习 cookie session 正向代理和反向代理的区别

1.学习网址:https://www.cnblogs.com/wxinyu/p/9154178.html 1.1 当我打开一个浏览器的时候,客户端有session id区分用户, 服务器有了session的浏览记录(浏览器编号的txt).多个页面则多个session, 1.2 token就是令牌…

axios 发 post 请求,后端接收不到参数的解决方案

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 问题场景 场景很简单,就是一个正常 axios post 请求: axios({headers: {deviceCode: A95ZEF1-47B5-AC90BF3},me…

nginx+keepalived高可用性负载均衡

一、前言nginx进程基于于MasterSlave(worker)多进程模型,自 身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存 活高可靠性,Slave(work…

经典监督学习方法

生成算法尝试去找这个数据到底是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,哪个类别最有可能产生这个信号,这个信号就属于那个类别。 判别模型不关心数据是怎么生成的,它只关心信号之…

Ubuntu版本更新一路走来:朕就是这样的汉子

今日,Ubuntu发布了最新的14.04版本。当然,业界对新版Ubuntu褒贬不一,为此我们回顾了Ubuntu版本更新历史上几个比较有代表性的版本,看看Ubuntu这一路走来究竟有什么变化。Ubuntu刚刚发布了最新的14.04版本,围绕这一版本…

安装Ubuntu 14.04后要做的5件事情

Ubuntu最新版本Ubuntu 14.04已经发布,它是一个长期支持版本(LTS),提供软件包和安全更新的服务周期为5年。本文为大家简单介绍了Ubuntu 14.04版本新特性和安装Ubuntu 14.04后需要做的5件事情,以供参考。Ubuntu目前是世界…

昨天,我的大学学习[2]

昨天,我的大学学习[2] 曾毅 谁能改变我的命运[大学二年级] 如果说大学一年级的时候是一种被动学习状态,对计算机科学不能揽其全貌,那么进入大学二年级以后的学习便是比较有针对性的了,但这种转变并非偶然,同样也是经过…

springboot 项目输出 sql 到控制台、 SpringBoot 中 Mybatis 打印 sql

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 SpringBoot中Mybatis打印sql 如果使用的是 application.properties 文件,加入如下配置: logging.level.com.ex…

VUE.JS 组件化开发实践

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子。后来接到一个基于模板的活动…

提升开发效率的十个工具

Git 之前也有过不少版本控制的工具。有好的,也有糟糕的。不过它们都或多或少地误入歧途了。 这时候Git出现了。一旦你用上了这个神奇的工具,很难相像你还会碰到比它更好的了。 还没用过Git?试一下吧。 Stack Overflow 真的,我没…

input 框 去掉下面的提示文字、提示选项

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 我的一个输入框总是有提示文字: 2. 去掉方法,给 input 加一个属性: autocomplete"off"…

解决: VUE 项目中表单提交中文乱码、接口请求参数中文乱码

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. 表单提交出现乱码: 接口请求乱码同于上图。 2. 解决: 在出现乱码的内容外面加函数:decodeURI()…

大数据 — Hadoop

HDFS Hadoop 1.0: 3个组件: NamenodeSecondNamenodeDatanodenamenode(主节点,master,只有一个,单点故障的风险)中间存储信息(元数据) 2种映射关系: path -> blockid l…

VUE:兄弟组件间传参

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1、定义一个中间 eventBus.js ,只有 2 行代码,用于传参: // 此页面是vue 巴士,用于兄…

asp.net ajax的学习第一篇

自己理解的asp.net ajax的核心思想&#xff1a; javascript 调用web service <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />由于工作的原因&#xff0c;要在自己的网页上使用无刷新技术&#xff0c;增加客户体验。开始学习asp…

解决:No goals have been specified for this build. You must specify a valid lifecycle phase or a goal i

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 执行打包命令报错&#xff1a; No goals have been specified for this build. You must specify a valid lifecycle phase or a goa…

生成随机码,保存随机文件.

PrivateFunction GetRandomizeNo()Function GetRandomizeNo() As Integer 功能说明:生成随机验证码 Dim RandomizeNo As Integer Randomize() RandomizeNo 9999 * Rnd() 1000 If (RandomizeNo).ToString.Length > 5 Then R…