mongo(三)基本操作

本文来自mongodb官方文档的部分翻译以及自己的理解。
 
CRUD:增加(Create)、读取(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。
mongodb是以文件形式存储数据的,像json一样的field-value。
 
 
 
mongodb读操作
 
一般来说,一张图能说明很多问题
 
mongodb把所有的文件存储在collections中,一个collections是由一些相关的文件组成的,类似与关系数据库中的表。
 
在mongodb中,query是针对collections的(可以理解为针对表table);
query请求中包括请求条件,从而可以在collections中挑选目标信息返回;
modifier一般会包含limits,skips和sort orders等操作,对数据进行进一步的处理。
 
db.records.find( { "user_id": { $lt: 42 } }, { "history": 0 } )
可以通过设置第二个{}字典来设置显示的字段(fields)信息,在这里history设置为0,表示history字段不需要显示,反之,设置为1的话只显示history字段
db.records.find( { "user_id": { $lt: 42 } }, { "name": 1, "email": 1 } )
如上,这里就是只显示两个字段信息,name和email cursor
cursor在mongodb中仍然存在,默认情况下cursor关闭的时间为10分钟无操作之后。可以通过:cursor.addOption()来设置cursor的属性:
mongodb返回的数据是分批返回的,默认情况下第一次返回101 documents(最多不超过1 megabyte,后续批量大小是4 mb),可通过batchSize() and limit()来改变返回数据的数量。
 
添加索引
在mongodb的shell下,通过db.collection.ensureIndex() 命令来添加索引字段信息,可以使用explain() 来查询一次查询相关的统计信息。
db.inventory.ensureIndex( { type: 1 } )
db.inventory.ensureIndex( { type: 1, item: 1 } )
分片集群读取操作

mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发到对应的shard服务器上。在生产环境通常有多mongos作为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作。

config server,顾名思义为配置服务器,存储所有数据库元信息(路由、分片)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息,以后如果配置服务器信息变化会通知到所有的 mongos 更新自己的状态,这样 mongos 就能继续准确路由。在生产环境通常有多个 config server 配置服务器,因为它存储了分片路由的元数据,这个可不能丢失!就算挂掉其中一台,只要还有存货, mongodb集群就不会挂掉。

mongodb支持javascript的基本语法

定义变量

var xxx = {"xx","xx"}
插入数据库 
db.xxx.insert(xxx)

查找条件

①: >, >=, <, <=, !=, =
在mongodb中对应于"$gt", "$gte", "$lt", "$lte", "$ne",和shell比较大小的相同
②:and,ro,in,nin
and其实就是默认的搜索条件,不需要添加and
 
②:正则表达式
$where语句
 
update更新 inc累加 set设置
 
upsert语句,如果没有就要插入
具体格式为db.database.update({"xx":"xx"}, {$inc:{"xx":"xx"}}, true)
limit和skip

mongo(三)基本操作的更多相关文章

  1. mongo数据库基本操作--python篇

    连接数据库 MongoClient VS Connection class MongoClient(pymongo.common.BaseObject) | Connection to MongoDB ...

  2. Docker入门实践(三) 基本操作

    Docker安装完毕.我们就能够试着来执行一些命令了.看看docker能够干什么. (一) 创建一个容器 首先.让我们执行一个最简单的容器,hello-world.假设安装没有问题.并执行正确的话,应 ...

  3. tensorflow学习笔记三----------基本操作

    tensorflow中的一些操作和numpy中的很像,下面列出几个比较常见的操作 import tensorflow as tf #定义三行四列的零矩阵 tf.zeros([3,4]) #定义两行三列 ...

  4. Mongo数据库基本操作

    从这两个类的继承来看,connection是继承了MongoClient的,建议使用MongoClient而不是使用Connection.(也就是说,MongoClient可以使用方法Connecti ...

  5. linux下MongoDB客户端shell基本操作

    MongoDB 是一款NoSql数据库,没有固定的模式,即同一个集合中的不同文档结构可以不同,如:第一条记录{name:”xiaoming”},第二条记录:{name:”xiaoli”,age:15} ...

  6. mysql图形化工具基本操作

    一.DataType 常见的数据类型: - `int` 整数 - `varchar(len)` 字符串 - `tinyint(1)`布尔值 二.设置字段的特殊标识 - `PK`(`Primary Ke ...

  7. graylog2+syslog-ng+mongodb构建集中管理日志服务器 --转载

    原文地址:http://blog.chinaunix.net/uid-11065483-id-3654882.html 由于公司内需要监控QQ的上下线记录,原本使用了分光+Panabit+Splunk ...

  8. MySQL数据库在linux的安装,编程与操作

    一.安装 ubuntu上安装MySQL非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server   2. apt-get isntall mysql ...

  9. MongoDB学习(二)Windows环境安装MongoDB

    MongoDB的官方下载站是http://www.mongodb.org/downloads,可以去上面下载最新的程序下来. 在下载页面可以看到,对操作系统支持很全面,OS X.Linux.Windo ...

  10. Win7下MongoDB安装

    一.下载MongoDB 下载地址:http://www.mongodb.org/downloads 注意:1.从2.2开始,MongoDB不再支持windows xp. 2.32位MongoDB最大支 ...

随机推荐

  1. [Tomcat 源码分析系列] (附件) : setclasspath.bat 脚本

    @echo off rem Licensed to the Apache Software Foundation (ASF) under one or more rem contributor lic ...

  2. 如何使用XproerUI库(WTL)-XproerUI界面库教程

    版权所有 2009-2015 荆门泽优软件有限公司 保留所有权利 产品首页:http://www.ncmem.com/apps/xproerui/index.asp 开发文档(SkinStudio): ...

  3. UVa 10071 - Back to High School Physics

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...

  4. Android_getSystemService (demo_testNet)

    今天主要通过一个案例来看下我们的Android 获取系统服务的问题. 我们通常能够看见登录QQ后如果没有网络的状态的时候,它会告诉你一句话:您进入了没有网络的异次元或者是什么网络连接错误等等.Andr ...

  5. sql良好习惯

    我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?我么还 ...

  6. 如何查看linux内核的版本号?

    zz:http://www.cnblogs.com/hnrainll/archive/2011/06/08/2074957.html 方法一: 命令: uname -a 作用: 查看系统内核版本号及系 ...

  7. Appium学习路-打包apk和ipa篇

    间隔这么长时间再去写Appium的学习篇是有原因的,因为在想要用appium测试ios时,发现appium只能测试debug版本的ipa包.然后就需要自己去学习打包了啊.然后就对xcode各种不了解, ...

  8. java基础八 [序列化和文件的输入/输出](阅读Head First Java记录)

    对象具有状态和行为两种属性.行为存在类中的方法中,想要保存状态有多种方法,这里介绍两种: 一是保存整个当前对象本身(通过序列化):一是将对象中各个状态值保存到文件中(这种方式可以给其他非JAVA程序用 ...

  9. 2.Java对象创建

    1. 对象的创建 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载.解析和初始化过.如果没有,那必须先执行相应的类 ...

  10. php字符串赋值到js的坑

    很早以前的一个比较坑的问题,今天又遇到了,记录一下,免得以后再次入坑. 把php赋值到view层时,如果不是直接渲染到页面,而是赋值给变量.字符如果有回车或者换行就会出现问题. 示例: <?ph ...