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学习之路(四)的更多相关文章

  1. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  2. MongoDB学习笔记(四)--索引 && 性能优化

    索引                                                                                             基础索引 ...

  3. zigbee学习之路(四):按键控制(中断方式)

    一.前言 通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式. 二.原理分析 传统 ...

  4. mongodb学习之路1

    第一节 MongoDB介绍及下载与安装 引言 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似 json的b ...

  5. MongoDB学习笔记&lt;四&gt;

    今天继续学习MongoDB的相关知识,主要包含例如以下: --find具体解释 --分页与排序 --游标和其它知识 1.指定返回的键 db.person.find({},{"_id" ...

  6. MongoDB学习笔记(四)

    第四章 Mongodb聚合函数 插入 测试数据 for(var j=1;j<3;j++){ for(var i=1;i<3;i++){ var person={ Name:"ja ...

  7. MongoDB 学习笔记(四):索引

    一.索引的基本使用 1.建立索引 在shell中为某个key建立索引的方法为:db.集合名.ensureIndex({key:1}),其中的key表示为哪个key建立索引,1表示升序建立索引,而-1表 ...

  8. [原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. MongoDB 学习笔记(四)C# 操作MongoDB

    C#驱动对mongodb的操作,目前驱动有两种:官方驱动和samus驱动,不过我个人还是喜欢后者, 因为提供了丰富的linq操作,相当方便. 官方驱动:https://github.com/mongo ...

随机推荐

  1. zzuli--2134: 维克兹的进制转换(规律)

    2134: 维克兹的进制转换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 287  Solved: 63SubmitStatusWeb Board D ...

  2. java实现网页爬虫

    接着上面一篇对爬虫需要的java知识,这一篇目的就是在于网页爬虫的实现,对数据的获取,以便分析. -----> 目录:   1.爬虫原理 2.本地文件数据提取及分析 3.单网页数据的读取 4.运 ...

  3. Oracle 高水位线和全表扫描

    --Oracle 高水位线和全表扫描--------------------------2013/11/22 高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式.高水位线对全表扫描方式有着至 ...

  4. asp.net 开发 sql server 转 oracle

    前段时间我们公司项目 要把sql server 转oracle 分享一下心得 也记录一下问题 开始我研究了一段时间 然后下载了 oracle 11g 版本 和 PL/SQL(客户端) 和sql ser ...

  5. Tomcat 部署安装及JVM调优~

    Tomcat 部署Tomcat环境 环境准备 linux: CentOS 7.3 tomcat: 9.0.0.M21 jdk: 1.8.0_131 ip: 192.168.1.5 tomcat官方下载 ...

  6. 'IFileDialog' : no GUID has been associated with this object

    在VS2010中使用IFileDialog,提示一下错误: 'IFileDialog' : no GUID has been associated with this object MSDN上明确表示 ...

  7. TCP三次握手和四次挥手

    三次握手 (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认. (2)第二次握手: ...

  8. 7.21.04 for循环

    for循环的三个语句可以放置任何表达式,但是有个不成文的规则,for循环的3个部分应当对同一个计数器变量进行初始化,检测和更新.若不遵循这一规则,编写的循环常常晦涩难懂! 如果在循环第一部分声明了一个 ...

  9. 从 HTTP 到 HTTPS 再到 HSTS

    近些年,随着域名劫持.信息泄漏等网络安全事件的频繁发生,网站安全也变得越来越重要,也促成了网络传输协议从 HTTP 到 HTTPS 再到 HSTS 的转变. HTTP HTTP(超文本传输协议) 是一 ...

  10. Java并发包中CopyOnWrite容器相关类简介

    简介: 本文是主要介绍,并发容器CopyOnWriteArrayList和CopyOnWriteArraySet(不含重复元素的并发容器)的基本原理和使用示例. 欢迎探讨,如有错误敬请指正 如需转载, ...