一 MongoDB入门
一、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入门的更多相关文章
- MongoDB 入门之基础 DCL
此文章主要记录部分主要的 MongoDB 的 DCL 操作. MongoDB 默认不需要用户名和密码就可以用 mongodb.exe 登录 一.开启 MonogoDB 的权限模式 修改 MongoDB ...
- MongoDB入门三:MongoDB shell
MongoDB shell MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序.也可以用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于 ...
- MongoDB 入门之查询(find)
MongoDB 入门之查询(find) 1. find 简介 (1)find的第一个参数决定了要返回哪些文档. 空的查询文档会匹配集合的全部内容.默认就是{}.结果将批量返回集合c中的所有文档. db ...
- MongoDB入门简介
MongoDB入门简介 http://blog.csdn.net/lolinzhang/article/details/4353699 有关于MongoDB的资料现在较少,且大多为英文网站,以上内容大 ...
- mongodb入门教程二
title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...
- mongodb入门教程
title: mongodb入门教程 date: 2016-04-06 14:47:18 tags: --- 为什么要认识呢,因为这玩意就一傻逼 借用一下百科的介绍 MongoDB 是一个介于关系数据 ...
- MongoDb 入门教程
MongoDb 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 它是可扩展的高性能数据存储解决方案,经常被用于非关系型数据的存储,能存储海量的数据. 常 ...
- MongoDB入门必读(概念与实战并重)
MongoDB入门必读(概念与实战并重) 一.概述 MongoDB是一个基于分布式文件存储的数据库开源项目.由C++语言编写.旨在为WEB应用提供可护展的高性能数据存储解决方案. MongoDB是一个 ...
- mongodb入门很简单(3)
##简单的mongodb入门命令## 1.show dbs; //查看当前数据库 2.use databaseName; //选库 3.show tables/collec ...
- MongoDB入门实践
MongoDB入门实践 简单介绍MongoDB,包括MongoDB的使用场景.和MySQL的对比.安装部署.Java客户端访问及总结 MongoDB? 我们遵循需求驱动技术的原则,通过一个场景来引入M ...
随机推荐
- IO编程之File类
File类是java.io包下代表与平台无关的文件及目录,程序操作文件和目录都可以通过File类来完成.值得指出的是,不管是文件还是目录都可以通过File类来操作.File能新建.删除.重命名文件和目 ...
- python基础之文件的读取
#文件名 txt文件的读取#文件的读取 open("文件","读写方法") with open("文件","读写方法") ...
- 【洛谷 P2388 阶乘之乘】模拟
分析 求因数5的个数 AC代码 #include<iostream> using namespace std; int main() { long long n,t,ans=0,s=0; ...
- java 8内置的四大核心函数式接口
Consumer<T> : 消费性接口 返回值 void accept(T t); public void happy(double money, Consumer<Double& ...
- [考试总结]noip8
又是一个题的正解都没有打出来的一天 但是自己独创了 \(lca\) 的求法, 然而如果去掉求 \(lca\) 的过程,就不会 \(TLE\) 了. \(\huge{\text{囧}}\) 然后就是对性 ...
- js排序——sort()排序用法
sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点. 语法:array.sort(fun):参数fun可选.规定排序顺序.必须是函数.注:如果调用该方法 ...
- Vue--el-menu 的自动跳转功能与自己的click事件冲突
一\先看elementUI说明 项目实际 此时点击活导航时以 index 作为 path 进行路由跳转 那么此时不要onclik事件了 如果此时有在有click 就
- intouch 趋势图Y轴自适应功能完善
在项目中有利用到历史趋势,其y轴往往展示的是该点的最小/最大值范围,对于曲线波动展示不够友好.故而利用自带方法进行完善,以此记录. Histrend1.MinRange=HTGetAutoScaleV ...
- 快速上手pandas(下)
和上文一样,先导入后面会频繁使用到的模块: In [1]: import numpy as np import pandas as pd import matplotlib.pyplot as p ...
- HttpRunner3源码阅读:4. loader项目路径加载,用例文件转换、方法字典生成
loader.py 这个文件中主要是对yaml,json用例加载转换成用例处理, 预置函数加载成方法字典,路径加载等 可用资料 [importlib]. https://docs.python.org ...