mongodb设置 十个要点
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设置 十个要点的更多相关文章
- (转)MongoDb的十个使用要点
从 mongodb 阶段性技术总结 中抽取并整理了对大家有帮助的十个要点: 1.mongodb 表名和字段名统一用小写字母 mongodb 是默认区分大小写的,为了避免以前在 mysql 下遇到的 ...
- Java堆内存的十个要点
Java中的堆空间是什么? 当Java程序开始运行时,JVM会从操作系统获取一些内存.JVM使用这些内存,这些内存的一部分就是堆内存.堆内存通常在存储地址的底层,向上排列.当一个对象通过new关键字或 ...
- window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置
最近公司有一个项目模块让用nosql-mongodb替换了,故,对mongodb做了一点研究,然后分享一下! 1.首先说一下安装时的坑 下载mongodb,如果你从官网下载,将会是一件很慢的事情,在公 ...
- 将mongodb设置为windows服务
[转载] [转载]安装mongodb以及设置为windows服务 详细步骤 将mongodb设置成windows服务,这样就不用使用命令启动了,设置方法如下: 1.在data文件夹下新建一个log文件 ...
- windows下mongodb设置用户名密码&用python连接
环境: 主机:WIN10 python版本:3.5 mongodb版本:3.4.2 开发环境:pyCharm mongodb设置用户名密码: 编写mongodb配置文件mongodb.confdbpa ...
- MongoDB(四)mongodb设置用户访问权限
我们知道MySQL在安装的时候需要我们设置一个数据库默认的用户名和密码,mongodb也不例外,不过mongodb是默认的没有设置访问限制的,不需要输入用户名和密码都可以访问的,但是这样会十分的不安全 ...
- MongoDB设置访问权限、设置用户(转)
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...
- MongoDB设置访问权限、设置用户
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...
- [转载]MongoDB设置访问权限、设置用户
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于W ...
随机推荐
- MySQL-CentOS7上安装Mysql5.7
#安装 wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm .noarch.rpm yum instal ...
- 云计算与大数据实验:Hbase shell操作用户表
[实验目的] 1)了解hbase服务 2)学会hbase shell命令操作用户表 [实验原理] HBase是一个分布式的.面向列的开源数据库,它利用Hadoop HDFS作为其文件存储系统,利用Ha ...
- 调用office Word Com 组件,提示权限不足处理
最近一直在处理一个项目,项目主要功能与Office-Word 有关,主要涉及到文本内容编辑与样式设置等相关内容.因项目依赖office 相关dll,需要兼容多种Office 版本(office 200 ...
- k8s包管理工具helm - 介绍和安装
目录 1.Kubernetes 应用部署的挑战 2.Helm 是什么 3.Helm 组件及相关术语 4.Helm 工作原理 5.Helm 安装 5.1 客户端安装 5.2 安装服务端 Tiller 5 ...
- Linux服务-bind
目录 1.安装bind 2.配置bind 3.添加正.反向解析域 3.1 指向生效的配置文件 3.2 生成配置文件cljhfy.com.zone和163.168.192.zone 4.验证 Linux ...
- ab 接口压力测试工具使用
安装: yum install httpd-tools 使用: ab -n 1000 -c 100 http://www.baidu.com/; -n 总的请求数; -c 并发数; -k 是否开启长 ...
- 牛客1024B 石头游戏
题目描述 石头游戏在一个 \(n\) 行 \(m\) 列 \((1\leq n,m \leq 8)(1≤n,m≤8)\) 的网格上进行,每个格子对应一种操作序列,操作序列至多有10种,分别用0~9这1 ...
- sqlserver2005新特性介绍
1.更强的编程能力-CLR集成 增强了数据库的编程能力,将一些逻辑层(Bll)转移到数据库中,减少了网络中的数据流量,但是增加了服务器cpu的负荷,当我们需要操作大量的数据,但是产生很少的数据,把这种 ...
- 【Selenium-WebDriver实战篇】Eclipse上的maven使用JsonObject时,添加依赖后无法自动下载相应的jar包
==================================================================================================== ...
- 【Spring】如何配置多个applicationContext.xml文件
在web.xml中通过contextConfigLocation配置spring 开发Java Web程序,使用ssh架构时,默认情况下,Spring的配置文件applicationContext.x ...