MongoDB学习笔记01

MongoDB的设计理念:能从服务器端转移到驱动程序来作的事,就尽可能转移。shell

文档是MongoDB的核心概念。多个键及其关联的值有序的放置在一块儿即是文档。每种编程语言表示文档的方法不太同样。数据库

文档的键是字符串。除了少数例外状况。键能够使用任意UTF-8字符。键不能含有\0(空字符),这个字符用来表示键的结尾;.与$有特别的意义,只有在特定环境下才能使用;如下划线“_”开头的键是保留的,虽然这个并非严格要求的。编程

MongoDB区分类型与大小写。{“foo”:"3"}与{"foo":3}  {"foo":3}与{"Foo":3},它们是不一样的。数组

MongoDB不能有重复的键。服务器

集合就是一组文档。若是说MongoDB中的文档相似于关系数据库中的行,那么集合就如同表,多个集合能够组成数据库。集合是无模式的,这意味着一个集合里面的文档能够是各类各样的。咱们能够经过名字来标识集合,集合名能够是任意UFT-8字符串,只要知足一下条件:异步

1. 集合名不能是空字符串编程语言

2. 集合名不能含有\0字符,这个字符表示集合名的结尾函数

3. 集合名不能以"system."开头,这是为系统集合保留的前缀。设计

4. 用户建立的集合名字不能含有保留字符$。有些驱动程序的确支持在集合名里面包含$,这是由于某些系统生成的       集合中包含该字符。除非你要访问这种建立的集合,不然千万不要在名字里出现$3d

多个集合能够组成数据库,和集合同样数据库也经过名字来标识,数据库的名能够是知足一下条件的任意UFT-8字符串:

  1. 不能是空字符串

  2. 不能含有''(空格)、.、$、/、\和\0(空字符)

  3. 应所有小写

  5. 最多64字节

数据库名最终会变成文件系统里的文件,这也是如此多限制的缘由。把数据库的名字放到集合前面,获得就是集合的彻底限定名,称为命名空间。命名空间的长度不得超过121字节,在实际使用当中应小于100字节。 

MongoDB默认使用27017端口.

启动MongoDB并指定数据保存的位置 bin\mongod.exe  --dbpath 数据存储的路径,默认保存在(c:\data\db)   

插入数据

 读取数据

  find会返回集合里面全部的文档,若只想查看一个文档,能够使用findOne。find与findOne能够接受查询文档形式的限定条件。使用find时,shell自动显示最多20个匹配的文档,但能够获取更多文档。  

更新数据 删除数据

mongo是MongoDB的shell客户端,是一个内置的JavaScript解释器,它还有一些非JavaScript语法的扩展。

有个了解函数功能的技巧,就是在输入的时候不要输入括号,这样会显示该函数的JavaScript源代码,如想看find的机理或参数:

JavaScript只有在db中找不到指定的属性时,才会将其做为集合返回,当属性与目标集合同名时,能够使用getCollection函数,要查看名称中含有无效JavaScript字符的集合,这个函数也能够派上用场。

ObjectId使用12字节的存储空间,每一个字节两位十六进制数字,是一个24位的字符串。这个长长的ObjectId是实际存储数据的两倍长。ObjectId的构成以下:

时间戳精确到秒级别

修改器:$set 若是指定的键不存在则建立它

           $unset 删除指定的键

     $inc 增长已有键的值,或键不存在时建立一个键,只能做用于整数、长整数或双精度浮点数

     $ne与$addToSet 数组中有重复的数据时不会添加

          $push 若是指定的键已经存在,会向已有的数组末尾加入一个元素,要是没有就会建立一个新的数组

          $each

          $pull 会将全部匹配的部分删掉

          $pop 从数组任何一端删除元素 {$pop:{key:1}}从数组末尾删除  {$pop:{key:-1}}从数组头部删除

          数组的定位修改:经过位置(从0开始)或定位操做符("$")【定位符只更新第一个匹配的元素】

upsert是一个特殊的更新,要没有文档符合更新条件,就会以这个条件和更新文档为基础建立一个新文档,若是找到了匹配的文档,则正常更新。效果如图:

save是一个shell函数,能够在文档不存在时插入,存在时更新,他只有一个参数:文档。要是这个文档含有"_id"键,save会调用upsert,不然会调用插入。

想要知道更新了多少个文档,能够运行getLastError命令

findAndModify命令中每一个键对应的值以下:

  findAndMondify:集合名

  query:查询文档,用来检索文档的条件

  sort: 排序结果的条件

  update:修改文档,对找到的文档执行更新

  remove:布尔类型,表示是否删除文档

  new:布尔类型,表示返回的是更新前的文档仍是更新后的文档,默认是更新前的文档

“update”与“remove”必须有一个也只能有一个,要是匹配不到文档,这个命令会返回一个错误。相比普通的更新来讲,findAndMondify速度要慢一些。

MongoDB中的操做时瞬时完成的,这是由于它们都不须要等待数据库的响应,这并非异步操做,客户端将文档发送给服务器后就马上干别的了。

相关文章
相关标签/搜索