(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,一经查实,立即删除!

相关文章

什么是 ES6 ?

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。Mozilla公司将…

史上最全换档讲解手动档汽车的换挡技巧

转个东东给大家看看,关于换档的。在网上已有很多讨论,涉及到的方面也林林总总。归纳一下的话,我觉得不外乎可以分为两 大类,一是换挡时机,即何时加档何时减档;二是换挡本身的操作,包括换挡时油门…

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命令…

怠速详解

怠速状态是指发动机空转时一种工作状况。在发动机运转时,如果完全放松油门踏板,这时发动机就处于怠速状态。调整怠速时转速不能突高突低,否则会对发动机造成早期磨损,最好到汽车维修部门进行调整。中文名 怠数英文名 IDLE属 性…

Python logger模块

1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本…

离合器半联动

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

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

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

JS 中 Map 与 JSON 转换

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1. JSON数据 转 字符串 JSON.stringify(jsondata) 2. 字符串 转 JSON JSON.parse(str) 3. Map 转 JSON,需要先将Map转化…

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

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

nginx+keepalived高可用性负载均衡

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

白发变黑有诀窍

白发变黑发的有效方法 1、要远离焦虑: 如果天天的忧愁、烦恼、焦虑,则可能引起脱发,焦虑压抑的时间越长,脱发就会迅速的加快。不管工作如何忙碌,建议女性保持适当的运动量以及愉快的心情,头发也会富有光…

经典监督学习方法

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

Map 集合循环、遍历的 四 种方式

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 package cn.jdbc.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry;/…

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

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

「2019纪中集训Day7」解题报告

T1、小L的数列 给一个数列 \(\{f_i\}\):\[ f_i \prod_{j 1}^{j \leq k} f_{i - j}^{b_j}, \ (i > k) \] 现在给定数列的前 \(k \ (k \le 200)\) 项及 \({b_i}\),求第 \(n\) 项。 \(Sol\): 注意到数列的任意一项 \(f_i \ (i > k)\)&am…

我想拥有一座庄园:“ 暮春三月,江南草长,杂花生树,群莺乱飞 ... ”

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 // 或许这个心愿是缘于少时读的诗:其中大多是对于自然的期许和神往 ... // 亦或许是想太多的人大多都有这样的心愿 ... 我想…

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

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

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

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

VUE 项目 去除 input 框值 所有空格、vue 组件去除空格、input 去除空格

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1.以下所有方法 我都试过:不行。 str.trim(); //去掉首尾空格 str.replace(" ",""); //去除所有空格&…