mongodb设置 十个要点

 

一、对象ID的生成

每一个mongoDB文档那个都要求有一个主键。它在每一个集合中对全部的文档必须是唯一的。主键存放在文档_id字段中。由12个字符组成;

4c291856       238d3b   19b2     000001

4字节时间戳   机器ID   进程ID  计数器3333

二、BSON

BSON是mongodb中用来标示文档的二进制格式,它既是存储格式,也是命令格式。全部文档都以bson存储在磁盘上,全部的查询和命令都用bson文档来指定。

Db.users.find({_id:ObjectId(‘4c291856238d3b19b2000001’)})

Db.users.find({_id:‘4c291856238d3b19b2000001’})

以上两种查询的结果全然不同。当中仅仅有一个能查询到匹配_id字段,这全然取决于users集合中的文档存储的是BSON对象ID还是标示ID十六进制的BSON字符串。

三、聚合命令限制

在有用性方面,distinct 和group有一个非常大的限制。它们返回的结果集不能超过16M。16M的限制并非这些命令本身所强加的阀值,这是全部的初始查询结果的大小。

假设distinct和group处理不了你的集合结果集,那么就仅仅能使用map-reduce取代了。它的结果能够保存在集合中的非内联返回。

四、原子文档处理

我们知道mongodb不善于处理事物,但要是用户确实须要须要进行查询和更新同一时候操作怎么办呢? 有一个工具你肯定不想错过,那就是mongodb的findAndModify命令。

该命令同意对文档进行原子性更新,并在同一次调用中返回。

db.collections.findAndModify(

{

query:{},update:{},new:true or false

}

)

默认情况下,findandmodify 命令会返回更新前的文档,要是返回改动后的文档,就把new设置为false.

五、对数组使用$unset

请注意在单个数组元素上使用$unset的结果可能与你设想的不一样。其结果仅仅是将元素的值设置为null,而非删除整个元素。要想彻底删除某个数组元素,能够用$pull 和$pop操作符。

六、$addToSet和$push的差别

该两者的功能都是给数组加入一个值。

可是两者之间有差别,$addToSet要加入的值假设不存在才进行加入操作,可是push仅仅加入一个值;比如:

tags = [“tools”,”garden”]

假设运行db.collection.update({},{$push:{tag:tools}}) 结果就是 [“tools”,”garden”。“tools”]

假设运行db.collection.update({},{$addToSet:{tag:tools}}) 结果不变

七、稀疏索引创建

在稀疏索引中仅仅会出现被索引键有值的文档,假设想创建稀疏索引,指定{sparse:true}就能够了。

比如:

Db.product.ensureIndex({sku:1},{unique:true,sparse:true})

Sku可能存在为null的文档。

八、声明索引时要小心

因为创建索引比較简单,所以非常easy在无意间创建索引,假设数据集非常大的话。构建会花费非常长的时间。而且没办法中种植。

同一时候创建索引时候最好先排序这样更加高效。

九、用Explain(true)具体查询运行计划

用户db.collection.find(condition).explain(true)

十、乐观锁

乐观锁就是并发控制,这项技术保证在无需锁定记录的情况下对器进行彻底更新。要理解它,最简单的办法就是想像一个wifi,有多个用户能够同一时候编辑一个页面。但你肯定不希望用户编辑并更新一个过期的页面,这是就能够使用乐观锁协议。当用户试图保存他们更改的时候,会在更新操作中添加一个时间戳。假设该值比这个页面近期保存的版本号旧,就不让用户更新。

这个在mongodb 运行$inc中用到

mongodb设置 十个要点的更多相关文章

  1. (转)MongoDb的十个使用要点

    从 mongodb 阶段性技术总结 中抽取并整理了对大家有帮助的十个要点:   1.mongodb 表名和字段名统一用小写字母 mongodb 是默认区分大小写的,为了避免以前在 mysql 下遇到的 ...

  2. Java堆内存的十个要点

    Java中的堆空间是什么? 当Java程序开始运行时,JVM会从操作系统获取一些内存.JVM使用这些内存,这些内存的一部分就是堆内存.堆内存通常在存储地址的底层,向上排列.当一个对象通过new关键字或 ...

  3. window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置

    最近公司有一个项目模块让用nosql-mongodb替换了,故,对mongodb做了一点研究,然后分享一下! 1.首先说一下安装时的坑 下载mongodb,如果你从官网下载,将会是一件很慢的事情,在公 ...

  4. 将mongodb设置为windows服务

    [转载] [转载]安装mongodb以及设置为windows服务 详细步骤 将mongodb设置成windows服务,这样就不用使用命令启动了,设置方法如下: 1.在data文件夹下新建一个log文件 ...

  5. windows下mongodb设置用户名密码&用python连接

    环境: 主机:WIN10 python版本:3.5 mongodb版本:3.4.2 开发环境:pyCharm mongodb设置用户名密码: 编写mongodb配置文件mongodb.confdbpa ...

  6. MongoDB(四)mongodb设置用户访问权限

    我们知道MySQL在安装的时候需要我们设置一个数据库默认的用户名和密码,mongodb也不例外,不过mongodb是默认的没有设置访问限制的,不需要输入用户名和密码都可以访问的,但是这样会十分的不安全 ...

  7. MongoDB设置访问权限、设置用户(转)

    MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...

  8. MongoDB设置访问权限、设置用户

    MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...

  9. [转载]MongoDB设置访问权限、设置用户

    MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...

随机推荐

  1. ansible 中 JAVA_HOME不生效问题

    解决方案 ~/.bash_profile 是交互式.login 方式进入 bash 运行的,意思是只有用户登录时才会生效. ~/.bashrc 是交互式 non-login 方式进入 bash 运行的 ...

  2. SAP错误消息调试之七种武器:让所有的错误消息都能被定位

    目录 长生剑 - SAPGUI Where Used List 碧玉刀 - ABAP调试器观察点 霸王枪 - ABAP调试器动态断点 多情环 - ABAP代码静态扫描 孔雀翎 - SAT 离别钩 - ...

  3. docker实战 (3) 常规配置

    本节会持续更新,在项目实战中遇到的docker配置都会更新进来 docker常用命令: docker 介绍: what: 是什么 why: 为什么用 how: 怎么用 docker 特点: 轻量级,可 ...

  4. PageRank网页价值算法

    一.简介 PageRank是Google提出的算法,用于衡量特定网页相对于其它网页而言的重要程度.是Google创始人拉里.佩奇和谢尔盖.布林于1997年创造的,用于实现将链接价值概念作为排名的重要因 ...

  5. selenium窗口句柄以及对话框处理

    多窗口.句柄: 1.获取当前句柄:driver.current_window_handle 2.获取所有句柄:driver.window_handles 3.切换句柄:driver.switch_to ...

  6. MySQL Percona Toolkit--pt-osc执行SQL命令

    pt-osc执行日志 在对数据量为100000的表tb004做DROP COLUMN操作,pt-osc工具日志为: Operation, tries, wait: analyze_table, , c ...

  7. [SDIO].SDIO总线详解

    转自:https://blog.csdn.net/liuhan33025/article/details/51131848 SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的 ...

  8. yum升级curl支持http2测试

    首先,先为你的服务器获取最新匹配的源:http://mirror.city-fan.org/ftp/contrib/yum-repo/ 方法1,rpm方式安装city-fan.org的yum源 # 安 ...

  9. linux系统查看系统内存和硬盘大小

    1. 查看系统运行内存 free -m free -g(Gb查看) cat /proc/meminfo 2. 查看硬盘大小 df -hl

  10. 2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest- H. Rikka with A Long Colour Palette -思维+贪心

    2018-2019 ACM-ICPC, Asia Xuzhou Regional Contest- H. Rikka with A Long Colour Palette -思维+贪心 [Proble ...