MongoDB学习之路(四)
MongoDB插入文档
MongoDB使用insert()或save()方法向集合中插入文档。
db.COLLECTION_NAME.insert(document);
For instance
>db.learn.insert({
title:'learnToInsert',
description:'SimpleFunction'
});
上述learn为集合名字,根据自己的实际情况来改变。
我们还可以将数据定义为一个变量,如下所示:
>document=({
title:'learnToInsert',
description:'SimpleFunction'
});
//执行插入操作
db.learn.insert(document);
WriteResult({"nInserted":1})
>
插入文档也可以使用db.learn.save(document)命令。如果不指定_id字段,save()方法类似于insert()方法。如果指定_id字段,则会更新该_id数据。
MongoDB更新文档
MongoDB使用update()和save()方法来更新集合中的文档。
update()方法
update()方法用于更新已存在的文档。语法格式如下:
db.collection.update(
<query>,
<update>,
{
upsert:<boolean>,
multi:<boolean>,
writeConcern:<document>
}
)
参数说明:
- query:update的查询条件,类似于sql update查询内where后面的条件。
- update:update的对象和一些更新操作符(如\(,\)inc...),可以理解为sql update查询内set后面的内容。
- upsert:可选,这个参数的意思是,如果不存在update的记录,是否插入objNew:true为插入,默认是false,不插入。
- multi:可选,mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件差出来的多条记录全部更新。
- writeConcern:可选,抛出异常的级别。
For instance
db.learn.update({'title':'learnToInsert'},{$set:{'title':'learnToInsertAndUpdate'}});
WriteResult({"nMatched":1, "nUpserted": 0, "nModified" :1 });
save()方法
save()方法通过传入的文档来替换已有的文档。语法格式如下:
db.learn.save(
<document>,
{
writeConcern:<document>
}
)
参数说明:
- document:文档数据
- writeConcern:可选, 抛出异常的级别。
save()方法直接根据ObjectId来进行修改即可。
MongoDB删除文档
MongoDB remove()函数是用来移除集合中的数据。
MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这时一个比较好的习惯。
db.collection.remove(
<query>,
{
justOne:<boolean>,
writeConcern:<document>
}
)
参数说明:
- query:(可选)删除的文档的条件。
- justOne:(可选)如果设为true或1,则只删除一个文档。
- writeConcern:(可选)抛出异常的级别。
MongoDB查询文档
MongoDB查询文档使用find()方法。
find()方法以非结构化的方式来显示所有文档。
语法
db.collection.find(query, projection)
- query:可选,使用查询操作符指定查询条件
- projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有的键值,只需省略该参数即可(默认省略)
如果需要以整齐的方式来读取数据,可以使用pretty()方法,语法如下:
db.collection.find().pretty();
pretty()方法以格式化的方式来显示所有文档。
MongoDB与RDBMS Where语句比较
操作 | 格式 | 范例 | RDBMS中类似语句 |
---|---|---|---|
等于 | {<key>:<value>} | db.col.find({"somekey":"somevalue"}).pretty() | where somekey = "somevalue" |
小于 | {<key>:{$lt:<<value>}} | db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 |
大于 | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 |
不等于 | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |
MongoDB AND 条件
MongoDB的find()方法可以传入多个键(key),每个键可以由逗号隔开,及常规SQL的AND条件。
语法如下:
>db.col.find({key1 : value1, key2 : value2 } ).pretty
MongoDB OR 条件
MongoDB OR 条件语句使用了关键字$or。
语法如下:
>db.col.find(
{
$or[
{key1: value1},
{key2: value2}
]
}
).pretty()
MongoDB 中AND和OR联合使用
一般的SQL中where语句
where name = "qiu" and (location = "jiangsu" or age < 25)
与之对应的MongoDB语句
>db.col.find({ "name": "qiu"
$or: [
{location : "jiangsu"},
{age : {$lt:25}}
]}).pretty();
by 一枝猪
MongoDB学习之路(四)的更多相关文章
- Redis——学习之路四(初识主从配置)
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...
- MongoDB学习笔记(四)--索引 && 性能优化
索引 基础索引 ...
- zigbee学习之路(四):按键控制(中断方式)
一.前言 通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式. 二.原理分析 传统 ...
- mongodb学习之路1
第一节 MongoDB介绍及下载与安装 引言 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似 json的b ...
- MongoDB学习笔记<四>
今天继续学习MongoDB的相关知识,主要包含例如以下: --find具体解释 --分页与排序 --游标和其它知识 1.指定返回的键 db.person.find({},{"_id" ...
- MongoDB学习笔记(四)
第四章 Mongodb聚合函数 插入 测试数据 for(var j=1;j<3;j++){ for(var i=1;i<3;i++){ var person={ Name:"ja ...
- MongoDB 学习笔记(四):索引
一.索引的基本使用 1.建立索引 在shell中为某个key建立索引的方法为:db.集合名.ensureIndex({key:1}),其中的key表示为哪个key建立索引,1表示升序建立索引,而-1表 ...
- [原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- MongoDB 学习笔记(四)C# 操作MongoDB
C#驱动对mongodb的操作,目前驱动有两种:官方驱动和samus驱动,不过我个人还是喜欢后者, 因为提供了丰富的linq操作,相当方便. 官方驱动:https://github.com/mongo ...
随机推荐
- hdu--1077--Catching Fish
思路: 1.枚举两点确定圆心,大于2不用考虑 2.逐个判断判断距圆心的距离小于1.00001符合题意 这个题,主要在求圆心上废了不少功夫,但是仍存在问题 #include<iostrea ...
- java配置mongo最大连接数
最近做压测,其中有个交易涉及到对mongo的操作. 单机压到1500UV的时候出现如下错误: 一看,原来是mongo配置的最大连接数不够: 我们来看看mongo的官方文档: connectionPer ...
- 常用 Http 的请求方法
第一次用markdown写博客,体验下 因为常用Http的几种请求方式,总结一下. 1.封装两个Http的最常用方法,叫做HttpHelper类. HttpPost: public static st ...
- ACM退役帖 -- 未真正开始也不会结束
2017.5.21,20岁的最后一天,昨天,随着2017年安徽省大学生程序设计竞赛落下帷幕,我也正式退役了ACM了.连ACM区域赛也没去过的我,也许是不够格提出退役ACM这句话的,但对ACM的热爱,虽 ...
- Apache Kafka系列(二) 命令行工具(CLI)
Apache Kafka命令行工具(Command Line Interface,CLI),下文简称CLI. 1. 启动Kafka 启动Kafka需要两步: 1.1. 启动ZooKeeper [roo ...
- MAC下安装MAMP的PHPredis扩展
下载phpredis扩展安装包.git clone https://github.com/nicolasff/phpredis.git: 解压后,进入该目录: 依次执行以下操作完成安装: /Appli ...
- 从零入手微信小程序开发
前言: 哈哈,发现我写的随笔都是项目驱使的.当然,这篇也是项目驱使的咯,前段时间领导在玩微信时候发现了微信小程序的好处,流程,切换速度快等,然后就让小弟研究研究小程序的实现. 补充下,博客大多都是处理 ...
- python实战===实现读取txt每一行的操作,账号密码
最近搞到了一批163邮箱的账号和密码,但是里面有部分账号不能用,密码是错的. 以此为背景 人工手动挨个登录检查效率太低! 于是写了下面这个脚本: import linecache import smt ...
- easyUI自带的时间插件日期选择、月份选择、时间选择的使用(转)
1.日期选择 只要将class设置成easyui-datebox就可以了,当然前提是已经应用了easyui的js <input type="text" class=" ...
- let 和 var定义变量的区别-盼盼Degenerate
let和var关键字的区别 声明后未赋值,表现相同 (function() { var varTest; let letTest; console.log(varTest); //输出undefine ...