一、MongoDB概念解析(对比MySQL学习):

举个例子:

MongoDB可视化操作工具:推荐Robomongo

二、MongoDB默认的概念:

1、MongoDB的单个实例可以容纳多个独立的数据库,并且每个数据库都有自己的集合和权限,存放在不同的文件中

2、MongoDB默认的数据库为“db”,这个数据库存储在data目录中

三、MongoDB基本命令:

1、数据库命令

show dbs:查询数据库的列表(MongoDB默认当该数据库中没有插入任何数据时,不会显示该数据库)

db:查看当前数据库对象或集合

use DATABASE_NAME:可以切换到指定的数据库(当该数据库不存在时就创建该数据库)

db.dropDatabase():删除当前数据库

2、插入(insert()和save()两种方式插入文档)

2.1 insert

db.COLLECTION_NAME.insert(document)

举个例子:在当前数据库的col集合中插入一个文档

PS:上面例子中col是当前数据库中的一个集合,如果该集合不存在,MongoDB会先创建该集合,然后向集合中插入数据

也可以换个方式插入:先定义一个变量document,然后插入,如下:

2.2 save

上述的操作也可以使用save来完成,save和insert的区别如下:

当插入的数据在MongoDB中存在相同的主键_id时,

使用save会将数据库中原来的数据进行更新

使用insert会报错,错误为:E11000 duplicate key error collection: test.col index: _id_ dup key: { : 2.0 }

2.3 插入单条数据和插入多条数据

3、更新(update和save两种方式)

3.1 update:更新已存在的文档

语法格式:

参数说明:

query:查询条件,类似mysql中的update语句where后面的部分

update:更新操作,类似mysql中的update语句set后面的部分

upsert(可选):表示如果没有query匹配到的记录,是否作为一条新的记录插入,默认为false,不插入

multi(可选):表示是否只更新query匹配到的第一条记录,默认是false,只更新匹配到的第一条

writeConcern(可选):表示抛出异常的级别

异常级别配置:

举个例子:

把上面这条记录的crud的改为更新数据的语句如下:

更多demo:

3.2 save方法:通过传入的文档,替换已有的文档

语法如下:

参数说明:

document:文档数据

writeConcern(可选):抛出的异常级别

PS:使用save方法时,mongodb会根据_id来判断是否已存在该条数据,即不能通过name="xxx"来匹配已有的一条记录,且save会将新传入的文档完全替换掉匹配到的已有文档

举个例子:

已有记录

save语句

执行结果

3.3 updateOne和updateMany

MongoDB从3.2版本开始,支持向指定集合更新单个文档和多个文档

更新单个文档:

更新多个文档:

4、删除

4.1 remove

语法格式如下:

MongoDB2.6版本以后remove的语法格式如下(以前的语法格式依然兼容):

参数说明:

query(可选):查询条件,类型mysql中delete语句后面的where部分

justOne(可选):表示是否只删除匹配到的第一个文档,0或false表示删除所有匹配到的数据,其他表示只删除匹配到的第一个

writeConcern(可选):表示抛出异常的级别(参考update的异常级别)

举个例子:

删除msg为mongodb的一条记录

删除所有的数据(类似mysql中的truncate)

4.2 deleteOne和deleteMany(推荐)

删除指定集合中的全部文档

删除指定集合中msg为mongodb的所有文档

删除指定集合中msg为mongodb的一个文档

5、查询

5.1 基本查询

语法格式如下:

参数说明:

query(可选):使用查询操作符指定查询条件,类似Mysql中select的where部分

projection(可选):使用投影操作符指定返回的键,省略该参数,即可返回文档中所有的键值(默认省略)

举个例子:

查询集合col中的所有文档

查询集合col中msg为mongodb的所有文档

查询集合col中的msg为mongodb的一个文档

PS:据说是用pretty方法可以以格式化的方式来显示所有文档(使用robomongodb时,可以选择显示结果的方式,与我们的查询语句中是否加上pretty方法无关)

projection的用法:

建议:在使用remove方法删除集合中的某条记录时,先使用find方法来执行一下判断的条件,验证是否正确

5.2 MongoDB与RDBMS的where语句比较

大于、等于、小于

AND条件

MongoDB的find方法可以传入多个键值,不同键值以逗号“,”分开,等同于mysql中的AND条件

语法格式为:

等同于

WHERE key1=val1 AND key2=val2

举个例子:

OR条件

MongoDB使用$or来表示OR条件语句

举个例子:

AND和OR联合使用:

等同于Mysql语句为:'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'

参考资料:

http://www.runoob.com/mongodb/mongodb-tutorial.html

一 MongoDB入门的更多相关文章

  1. MongoDB 入门之基础 DCL

    此文章主要记录部分主要的 MongoDB 的 DCL 操作. MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录 一.开启 MonogoDB 的权限模式 修改 MongoDB ...

  2. MongoDB入门三:MongoDB shell

    MongoDB shell MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序.也可以用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于 ...

  3. MongoDB 入门之查询(find)

    MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...

  4. MongoDB入门简介

    MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...

  5. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  6. mongodb入门教程

    title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...

  7. MongoDb 入门教程

    MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数据存储解决方案,经常被用于非关系型数据的存储,能存储海量的数据. 常 ...

  8. MongoDB入门必读(概念与实战并重)

    MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...

  9. mongodb入门很简单(3)

     ##简单的mongodb入门命令## 1.show dbs;      //查看当前数据库 2.use databaseName;         //选库 3.show tables/collec ...

  10. MongoDB入门实践

    MongoDB入门实践 简单介绍MongoDB,包括MongoDB的使用场景.和MySQL的对比.安装部署.Java客户端访问及总结 MongoDB? 我们遵循需求驱动技术的原则,通过一个场景来引入M ...

随机推荐

  1. 雪花算法(SnowFlake)Java实现

    分布式id生成算法的有很多种,Twitter的SnowFlake就是其中经典的一种. 算法原理 SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图: 1bit,不用,因为二 ...

  2. ORM研究3 - odoo fields常用的字段属性

    之前我们已经讲解了odoo ORM中的一些对字段常用的API操作方法,今天我们继续研究一下Odoo orm中字段的一些通用属性字段的使用,学会它们可以为自己创建数据映射并使用有更好的帮助. 通用字段属 ...

  3. Scala学习——面向对象

    Scala面向对象 三大特征:封装.继承.多态 1.类的定义和使用 package top.ruandb.scala.Course02 object Simple { def main(args: A ...

  4. MySql存储过程的创建与使用及在thinkphp中如何调用笔记

    学习sql的存储过程,笔记总结如下: MySQL默认将分号,即";"作为语句的分隔符.如果是这样的话,则一个存储过程将很难正常创建,因为它的BEGIN和END之间可以是任意数量的S ...

  5. GeoServer Rest服务启动匿名认证的配置方法

    GeoServer Rest服务数据默认需要进行用户名.密码的认证,如不需进行该认证,则启动匿名认证即可,配置方式如下(针对war包发布的GeoServer应用): 在GeoServer war包的解 ...

  6. python里面的MD5加密 ---# hashlib包的使用

    在应用程序的接口里,常用到签名:其中签名里用到MD5加密,这里用hashlib实现 hashlib 概念:Hash,译做"散列",也有直接音译为"哈希"的.把任 ...

  7. (python函数03)zip()函数

    (python函数03)zip()函数 zip是用来压缩的,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个元组(tuple),然后返回有这些tuples组成的对象,可强制转化为列表和 ...

  8. java正则匹配字符串例子

    import java.util.regex.Matcher;import java.util.regex.Pattern; public class sss { public static void ...

  9. 开机时自动启动的AutoHotkey脚本 2019年07月08日19时06分

    ;;; 开机时自动启动的AutoHotkey脚本;; 此脚本修改时间 2019年06月18日20时48分;; 计时器创建代码段 ------------------------------------ ...

  10. Feign实战技巧篇

    介绍Feign在项目中的正确打开方式 看了上一期Feign远程调用的小伙伴可能会问:阿鉴,你不是说上一期讲的是Feign的99%常用方式吗?怎么今天还有正确打开方式一说呀? 阿鉴:是99%的常用方式, ...