MongoDB学习总结(二) —— 基本操作命令(增删改查)
上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令。
下面我们直奔主题,用简单的实例依次介绍一下。
| > 查看所有数据库 (show dbs) |

| > 插入文档 (insert) |
格式:> db.COLLECTION_NAME.insert(document)
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
下面在student集合中插入两条数据。

由于操作窗口是一个javascript shell,所以这里也可以使用js的写法。

由于文档是采用"K-V"格式存储的,JSON里面的Value可以是字符串,可以是数组,也可以是内嵌的一个JSON对象,所以BSON也同样。

| > 查询文档 (find) |
格式:> db.COLLECTION_NAME.find()
find() 方法显示所有文档。

注意“_id": 这个字段是数据库默认给我们加的GUID,目的是保证数据的唯一性。
另外find() 后面加上pretty() 方法以格式化的方式来显示所有文档。看起来会更舒服一点。

当然find()操作不只是查所有文档,还可以像sql那样带各种条件去查询。
MongoDB中条件操作符有以下:
1)$gt (大于)、$lt(小于)、$gte(大于等于)、$lte(小于等于)
实例如下:

写法很简单,对照着实例很容易理解,这里就不做讲解了。
2)$or(或者)、$in(包含在)、$nin(不包含在)
实例如下:

写法很简单,对照着实例很容易理解,这里就不做讲解了。
| > 高级查询 |
1)查询数组
对于数组,我们可以这样理解:数组中每一个元素都是这个键值对键的一个有效值
例如:查询student集合里兴趣爱好为篮球的文档。

我们可以看到只要爱好包含篮球的文档就可以查询出来。
那么如果多个呢。例如:查询student集合里兴趣爱好为篮球和吉他的文档。

我们可以看到虽然篮球和吉他在集合里存在,但是却查询不出来。
如果我们要匹配多个数组,就需要条件操作符$all.
例如:还是查询查询student集合里兴趣爱好为篮球和吉他的文档。

我们可以看到数组里只要包含条件值,都能被查询出来,而且顺序可以不同。
2)根据数组位置精确查找
我们知道数组索引是从0开始,所以根据索引位置精确查找到数组某一位。
例如:查询第一位为篮球的,第二位为吉他的。

3)数组截取 $slice
这里需要知道find函数里还有第二个参数,也就是用来控制需要显示哪些键值。1为显示,0为不显示。
例如:显示name和age键值

例如:显示name和age,不显示_id.

继续说到$slice,数组截取,下面看下实例。

可以看到值为1的时候,表示取数组里的前一位值,同理为2时,取数组前两位值。
为-1的时候,表示取数组最后一位,同理为-2时,取数组后两位值。
为[1,3]时,表示跳过第一位,取接下来的三位,如果不够三位,那么有几位就取几位。
4)内嵌文档查询

我们可以看到使用点表示法,深入到内嵌文档内部的键,来查询内嵌文档。
| > 更新文档 (update) |
格式:db.collection.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>})
参数说明:
query : update的查询条件,类似sql update查询内where后面的条件。
update : update的对象和一些更新的操作符(如$set,$inc)等,也可以理解为sql update查询内set后面的值。
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
1)基本修改

2)$set (直接设置值)
将jack的年龄修改为21岁。

3)$inc (在数字型的键值的原有值的基础上增加)
将jack的年龄增加5岁。

4)upsert ( 如果不存在记录,true为插入新的文档,false为不插入,默认值为false)

5) multi (默认为false,只更行符合条件的第一条记录,如果为true,则更新符合条件的全部记录)
为false的情况:

为true的情况:

| > 删除 (remove) |
格式:db.collection.remove(<query>,{justOne:<boolean>,writeConcern:<document>})
参数说明:
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
query :(可选)删除的文档的条件
writeConcern :(可选)抛出异常的级别。
基本用法很简单,看下实例。

注意:remove中如果不带参数将删除所有数据,不可撤回,所以要谨慎。
基本的增删改查命令的使用就介绍到这里,下一篇学习一些常用的聚合函数。
MongoDB学习总结(二) —— 基本操作命令(增删改查)的更多相关文章
- MVC3+EF4.1学习系列(二)-------基础的增删改查和持久对象的生命周期变化
上篇文章中 我们已经创建了EF4.1基于code first的例子 有了数据库 并初始化了一些数据 今天这里写基础的增删改查和持久对象的生命周期变化 学习下原文先把运行好的原图贴来上~~ 一.创建 ...
- MongoDB学习day07--mongoose入门,数据库增删改查,默认参数,模块化
一.mongoose介绍 Mongoose 是在 node.js 异步环境下对 mongodb 进行便捷操作的对象模型工具. Mongoose 是 NodeJS 的驱动, 不能作为其他语言的驱动. M ...
- Mysql学习笔记(六)增删改查
PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...
- SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询
SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...
- Ecmall二次开发-增删改查操作
Ecmall二次开发-增删改查操作 Model目录includes/models 自己添加需要的model class OrdercomplainModel extends BaseModel //类 ...
- mongodb数据库学习【安装及简单增删改查】
//@desn:mongodb数据库学习 //@desn:码字不宜,转载请注明出处 //@author:张慧源 <turing_zhy@163.com> //@date:2018/08/ ...
- Django基础学习四_数据库的增删改查
今天主要学习两个东西 1.如何对数据库做增删改查 2.如果将数据库中的数据用html的方式返回到前台 一.对数据库中增删改查操作 1.首先需要先见表,见表的方法我们在“http://www.cnblo ...
- MongoDB系列(三):增删改查(CURD)
上篇讲了MongoDB的基础知识,大家应该对MongoDB有所了解了,当然真正用的还是curd操作,本篇为大家讲解MongoDB的curd操作. 1.数据库操作 #.增 use config #如果数 ...
- MongoDB入门(介绍、安装、增删改查)
文章作者公众号bigsai,已收录在回车课堂,如有帮助还请不吝啬点个赞赞支持一下! 课程导学 大家好我是bigsai,我们都学过数据库,但你可能更熟悉关系(型)数据库例如MySQL,SQL SERVE ...
随机推荐
- VS2010打开旧版本MFC工程无对话框
解决方案: 左侧有个"资源视图",打开,里面就能找得到对话框,如果没有资源视图,就在菜单的视图选项里打开资源视图!
- iOS开发——UIAlertController
iOS8之后,UIAlertView和UIActionSheet被干掉了,取而代之的是UIAlertController和UIAlertAction. UIAlertController有两种样式,一 ...
- HDU 3264 Open-air shopping malls ——(二分+圆交)
纯粹是为了改进牛吃草里的两圆交模板= =. 代码如下: #include <stdio.h> #include <algorithm> #include <string. ...
- limesurvey设置短调查问卷url
If you want to use fancy URLs and so not have /index.php in every URL please edit /application/confi ...
- 【python之路11】集合数据类型(set)
集合数据类型(set):集合是不重复的无需序列 1.集合数据类型的创建 a = {11,22,33} #或 a = set() #创建空集合,不能用a={},这样创建的是字典类型 2.集合转换(将可迭 ...
- ubuntu系统内核替换
此处将内核由高版本替换成低版本.替换前的系统为ubuntu 12.04 kernel 3.8.0. 替换后的内核版本为2.6.35. 首先下载需要替换的内核文件,下载链接:https://www.ke ...
- bootstrap中下拉菜单点击事件 uncaught syntaxerror unexpected end of input异常问题
原代码: <ul class="dropdown-menu" role="menu"> <li><a href="jav ...
- Effective java -- 2 对于所有对象都通用到方法
第八条:覆盖equals时请遵守通用约定 什么时候需要覆盖equals方法?类具有自己的逻辑相等概念,并且父类的equals方法不能满足需要.重写equals时需要遵循一下约定: 自反性:非null ...
- Delphi中ShellExecute的妙用
ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制.有几个API函数都可以实现这些功能,但是在大多数情况下Shel ...
- JVM 参数设置
YGC FGC 都会影响程序的运行,中断程序,JVM参数调整比较复杂,现在记录了一下平时常用的JVM参数: jar 包启动: usr/java/bin/java -jar -Xms2560m -Xmx ...