Mongodb的基本概念

文档:是MongoDB中数据的基本单元,类似于关系型数据库中的行。

集合:多个文档组成一个集合,类似于关系型数据库中的表。

数据库:MongoDB的当个实例可以容纳多个独立的数据库,每个数据库有自己的集合和权限。

键:每个文档都有一个特殊的键”_id”,在所处的集合中是唯一的。

  • 文档

多个键值对有序的放在一起便是文档,如:

{ "name":"wangdh","age":"22"}

上面的文档包含两个键name和age,其值分别是wangdh和22.

说明:

1)文档的键值对是有序的,也就是说,下面的文档与上面的文档是两个不同的文档:

{"age":"22","name":"wangdh"}

2)文档的键是字符串。

3)MongoDB不但区分类型,还区分大小写。即下面的两个文档是不同的:

{"age":"22","Age":22}

{"age":22," Age ":"22"}

4)同一个文档不能有相同的键,如下面的文档是不合法的:

{"age":"22","age":22}

  • 集合

集合是一组文档,相当于关系型数据库的表。

1)集合的无模式性

无模式的意思是:一个集合中的文档可以各式各样,文档的键值对数、键值对顺序可以不一样。例如下面的文档可以存在于一个集合中:{"age":"22","Age":22}、{"name":"wangdh"}

但通过情况下,为了方便使用,一个集合往往只存放模式一致的文档。

2)子集合:通过“.”字符分开的按命名空间划分的子集合,如一个带有博客功能的应用可能包含两个集合:bolg.posts、blog.authors

  • 数据库

多个文档组成集合,多个集合组成数据库。一个MongoDB实例可以承载对个数据库,每个数据库都有独立的权限控制。

注意:数据库名最终会变成文件系统里的文件。

1)内置数据库

admin:从权限角度看,相当于root数据库,要是将一个用户添加到此数据库,这个用户自动继承所有数据库的权限。

local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合。

config:当Mongo用于分片设置时,该数据库保存分片的相关信息。

2)命名空间

将数据库的名字放在集合面前,得到的就是集合的完全限定名,成为命名空间。例如:在test数据库中有一个blog.posts集合,则该集合的命名空间就是:test.blog.posts.命名空间的长度不得超过121字节。

  • ”_id”键

MongoDB中存储的文档必须有一个”_id”键,可以是任意类型,默认是ObjectId对象。在一个集合中,每个文档都有唯一的”_id”键,来确保其唯一性。

1)ObjectId

使用12字节的存储空间,每个字节两位十六进制数,是一个24位的字符串。前4个字节是时间戳,精确到秒,接下来3个字节是所在主机的唯一标示符(通过是主机名的散列值),接下来2个字节是产生该ObjectId的进程标示符(PID)、最后3个字节是一个自动增长的计数器。

前9个字节保证了同一秒钟不同机器产生的ObjectId是唯一的,后3个字节确保相同进程同一秒产生的ObjectId是不一样的。

MongoDB Shell

MongoDB自带一个JavaScript shell,可以通过命令行与MongoDB实例交互。

  • 运行shell

windows平台下,通过在命令行运行bin目录下的mongo.exe文件,即可启动shell;Linux下通过运行mongo文件启动shell。shell会在启动时自动连接MongoDB服务器,所以要确保在使用shell之前启动mongod。

  • MongoDB客户端

shell是一个独立的 MongoDB客户端,开启时,shell会连到MongoDB服务器的test数据库,并把这个数据库连接赋值给全局变量db。可以通过use命令来转换数据库:use wangdh(如果该数据库不存在则会创建)。

  • shell中的基本操作

一般数据库的基本操作都是:创建、读取、更新、删除(CRUD).

1)创建 insert

insert函数添加一个文档到集合中。例如:先通过局部变量t1存储要插入的文档,然后通过全局变量db.集合名.insert(t1)将文档t1插入到指定集合中(集合不存在时会自动创建)。

>t1={"name":"wangdh","age":22}

>db.user.insert(t1)

2)读取 find

find函数返回集合中的所有文档,findOne函数返回一个文档。

例如:db.user.find()会将刚才插入的文档读取出来。

两个函数都可以接受查询文档形式的行动条件,使用find时,shell自动显示最大20个匹配的文档

3)更新 update

update函数接受至少两个参数:第一个是要更新的限定条件,第二个是新的文档。如:

>newName={"name":"newName"}

>db.user.update({"name":"wangdh"}, newName)

4)删除 remove

remove函数从数据库中永久性的删除文档,在不适用参数指定限定的情况下,会删除一个集合内的所有文档,例如:db.user.remove()

MongoDB学习笔记—02 MongoDB入门的更多相关文章

  1. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  2. MongoDB学习笔记(一) MongoDB介绍及安装(摘)

    MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网 ...

  3. Mongodb学习笔记二(Mongodb基本命令)

    第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...

  4. MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用

    1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...

  5. MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...

  6. MongoDB学习笔记一:入门

    文档:多个键及其关联的值『有序』地放置在一起. {"greeting" : "Hello, world!", "foo" : 3}集合:一组 ...

  7. MongoDB学习笔记02

    MongoDB中使用find来进行查询,查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.find的第一个参数决定了要返回哪些文档.空的查询文档{}会匹配集合的全部内容,要是不指定查 ...

  8. MongoDB学习笔记01:入门

    MongoDB简介 MongoDB是一个开源.高性能.无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种.是最 像关系型数据库(MySQL)的非关系型数据库. ...

  9. MongoDB学习笔记(一) MongoDB介绍及安装

    转自:http://database.51cto.com/art/201103/247882.htm http://baike.baidu.com/link?url=b6B3dVSCnQauCX-Ep ...

随机推荐

  1. 运用String类实现一个模拟用户登录程序

    package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...

  2. centos安装python

    安装Development tools yum groups install -y 'development tools' yum install -y zlib-dev openssl-devel ...

  3. db2 常用命令

    db2osconf 检查系统内核参数 db2pd 监控检查数据库工具,可以检查数据库的许多信息(锁.交易.表空间. SQL等) db2expln 查看程序包的执行计划 db2exfmt 格式化expl ...

  4. PTA Iterative Mergesort

    How would you implement mergesort without using recursion? The idea of iterative mergesort is to sta ...

  5. 利用bootstrap写图片轮播

    利用bootstrap写图片轮播 缺点是轮播没有固定样式图片样式会改变外框的大小,所以要再设置 以及左右按钮的style也要从新设置 <div class="carousel slid ...

  6. MVC将服务器端的物理路径转换为服务器路径

    以图片为例 后台Controller.cs public FileResult ImageUrl(string file) { return File("物理路径"+file, & ...

  7. Android学习---ListView和Inflater的使用,将一个布局文件转化为一个对象

    本文将介绍ListView和Inflater的使用,将接上一篇文章内容. 一.什么是ListView? 在android开发中ListView是比较常用的控件,ListView 控件可使用四种不同视图 ...

  8. Unity 之 Shader 对Z深度的偏移

    对Z深度的偏移 Offset 指令给了我们一个操作正常的ZTest 检测结果的手段. Offset有两个参数,这两个参数理解起来不是很直观,而且具体实现是和硬件相关的 下面在实际例子中看他的效果 Sh ...

  9. java 汉语转拼音(全拼,首字母)

    import java.util.*; import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.for ...

  10. 配置文件操作(ini、cfg、xml、config等格式)

    配置文件的格式主要有ini.xml.config等,现在对这些格式的配置文件的操作(C#)进行简单说明. INI配置文件操作 调用系统函数GetPrivateProfileString()和Write ...