MongoDB基础总结
1、数据可基本操作
1. 创建数据库
use databaseName
选择一个数据库,如果数据库不存在就自动创建一个数据库
只有向数据库中插入数据时,数据库才会被真实创建出来,而当数据库中没有数据时,use不会马上创建数据库,
这个特点有效减少了存储空间的占用。
2. 查看数据库
show dbs
mongodb中默认有以下几个数据库:
admin 存放用户和权限
local 存放本地化数据(分布式部署)
config 存储分片信息
3. 删除数据库
db.dropDatabase()
注意:mongodb中函数都用小驼峰命名
4. 创建集合
db.createCollection(collection_name)
5. 查看集合
show collections 或者 show tables
注意集合的命名规则:
1) 合法的utf-8字符串
2) 不能有’\0’
3) 不能以system开头,因为是系统的保留前缀
4)不能和关键字重复
6. 删除集合
db.collection_name.drop()
7. 集合重命名
db.collection_name.renameCollection(‘new_name’)
8. 获取集合对象
db.getCollection(‘collection_name’)
等价于db.collection
2、集合中增添数据
1. insert方法插入数据
语法:
db.collection_name.insert({数据内容})
当向一个集合中插入数据的时候,如果这个集合不存在则自动创建
最近插入的数据文档在数据库的最上方显示
插入的数据域默认是字符串,如果在插入字段中不用双引号,数据库后台就会自动加上
同时插入多条文档
db.collection_name.insert([{ }, { }, { }])
2. save方法插入文档
db.collection_name.save()
save与insert的区别
如果加_id域,如果这个_id域的值已经存在,则会替换原有的文档,而insert是不允许插入相同
的_id的
3、集合中删除数据
MongoDB删除数据的命令比较简单,也没有太多的变化
语法:
db.collection.remove(query ,justOne)
参数:
query与下文查询操作的query相同,justone表示只是删除匹配到的多条文档中的第一条文档
4、集合查询操作
1. 查询文档(重点)
语法:
db.collection_name.find(query,field)
相当于 mysql中的 select *
query 筛选条件,相当于MySQL的where子句
field 选择要展示的域
返回值: 返回查找到的文档
需要理解的点:
query 和 field都是可选参数,不写参数就默认显示所有文档,也只有查找时不用传入query,一般其他操作都需要传入query进行筛选
query 以键值对的形式给出查找条件
field 以键值对的形式给出要展示或者不展示的 域为键,值时0时不显示该域, 值是1时显示该域,这是mongodb特有的特性
例如:为了避免看到一大串的id值,在查找时_id 域经常会被设置为0
db.class.find( {},{_id :0} ) 除了_id 域,其他域都正常显示
注意:
1. 在写第二个参数时必须要写第一个参数
2. 第二个参数只能同时限制多个域的0/1值,不能多个域都设置不同,否则其他没设置的域会混乱,_id域的设置除外(即无论_id域怎么设
置都不影响其他域的设置)
query的使用
因为键值对无法进行像MySQL中where子句那样强大的筛选作用(键值对筛选相当于MySQL中where子句筛选的等于条件),mongodb引入了操作符操作符的表达形式是以键值对形式出现的。下面介绍几种常用的操作符,更多的操作符可以查看Mongodb的官方文档。
1)比较操作符
$eq 等于操作符
例如:db.class.find( {age: {$eq : 18} },{_id :0} )
更多操作符:
$gt 大于操作符
$lt 大于操作符
$ lte 小于等于操作符
$gte 大于等于操作符
$ne 不等于操作符
细节:mongodb中多种类型的数据都是可以比较的,例如数值类型,字符串类型
2)范围操作符
$ in [ ] 在范围集合内的文档被匹配 (连续的范围)
例如:db.class.find( {age: {$in : [18, 23]} },{_id :0} )
如果是用 $ and只能这样表达: $and:[{age:{$gt:.. } }, {age:{$lt:.. } } ]
用gt和lt一起用来把范围括起来
$ nin[ ] 不在范围集合内的文档被匹配
3)逻辑操作符
1. $ and: [ ] 和运算符
query 中如果多个条件用逗号隔开,就为and关系(类似mysql中的where子句中的and)
例如:db.class.find( {$and: [{age: {$ gt 17}, {age: {$ lt 22} ],{_id :0} ) 查询年龄大于17,小于22的同学
用$ and 可以改写为 db.class.find({$ and : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )
[ ]内一定要分成连个字典来表示两个条件,否则(只用一个字典来包含两个条件并用逗号分隔)在语法上就只表示一个条件,只不过这个条件里面包含两个条件而已
一般平常使用多直接用逗号来分隔条件而不用 $and的操作符
2 .$ or 或运算符
语法表达上跟 $ and 一样,表达的是或逻辑筛选
1. $not 取反运算符
db.class.find( {age: {$not {$ gt 17} } },{_id :0} ) 匹配年龄小于等于17的文档
注意: $not 一般添加在条件值的前面,对值进行取反
2. $ nor 既不也不运算符
not(A or B) --> not A and not B
db.class.find({$ nor : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )
注意:如果筛选匹配的文档的域是其他文档不具备的;即一个域有些文档有值,有些文档没值,这种筛选是无法匹配的
2. 查询操作的另一条语法
findOne(query,field)
查找符合条件的第一条文档
参数跟find一样
5、集合更新操作
1. 修改文档内容操作
语法:
db.collection.update(query,update,upsert,multi)
与mysql不同,mongodb所有修改操作都用update,包括对集合的域值的修改和集合结构的修改
参数:query 筛选要修改的文档,相当于where
update 将筛选的文档修改为什么内容,相当于set,需要配合修改操作符一起使用
upsert 布尔值,默认为false,如果query文档不存在则不进行修改 ,如果为true,在文档不存在条件下,则根据query和update插入新文档
multi 布尔值,默认为false如果query筛选的为多条,则只修改第一条,如果设置为true,则修改所有符合条件文档
注意:
upset 一般为用默认值false,因为如果原本没匹配的文档,很有可能是程序员自己输错了某些内容
修改操作符:
$ set
如果没有该文档,需要插入的时候是根据查询条件和设置条件作为域来插入的
如果需要修改的值为多个,就像插入数据一样,将不同域的值用一个{ }包起来,例如:
db.class.update({name:'小张'},{$set:{age:16,sex:'m'}},true)
MongoDB基础总结的更多相关文章
- mongodb基础用法
安装部分 mongodb配置方法 mongodb的安装目录 C:\MongoDB\Server\3.2\bin 创建以下目录 c:\mongo\log c:\mongo\db 创建mongodb的配置 ...
- mongodb基础系列——数据库查询数据返回前台JSP(一)
经过一段时间停顿,终于提笔来重新整理mongodb基础系列博客了. 同时也很抱歉,由于各种原因,没有及时整理出,今天做了一个demo,来演示,mongodb数据库查询的数据在JSP显示问题. 做了一个 ...
- MongoDB基础知识 02
MongoDB基础知识 02 6 数据类型 6.1 null : 表示空值或者不存在的字段 {"x":null} 6.2 布尔型 : 布尔类型只有两个值true和false {&q ...
- MongoDB基础知识 01
MongoDB基础知识 1. 文档 文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting& ...
- MongoDB基础教程系列--未完待续
最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作 ...
- DataBase MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- MongoDB 基础(2019年开篇)
MongoDB基础知识: 1.什么是MongoDB NoSQL(NoSQL=Not Only SQL),意即"不仅仅是SQL". MongoDB是一个介于关系数据库和非关系数据库之 ...
- MongoDB基础学习
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- windows下mongodb基础玩法系列二CURD附加一
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
- windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)
windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...
随机推荐
- 什么是XML? 什么是DTD?
XML XML称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C ...
- 2020-04-07:假如你们系统接收十几种报文,用什么方式对应的各自的service,总不能都用if-else判断吧
福哥答案2020-04-08: 策略,工厂.
- C#LeetCode刷题之#83-删除排序链表中的重复元素(Remove Duplicates from Sorted List)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3820 访问. 给定一个排序链表,删除所有重复的元素,使得每个元素 ...
- Vuex mapGetter的基本使用
getter相当于Vuex中的计算属性 对 state 做处理再返回 mapGetters 把 Store 中的 getters 映射到组件中的计算属性中 Store文件 import Vue fro ...
- Vue Slots
子组件vue <template> <div> <slot v-if="slots.header" name="header"&g ...
- Vue 生成条形码 jsbarcode的使用
安装依赖包 npm install jsbarcode --save 在使用页面引入依赖包 import JsBarcode from 'jsbarcode' 定义img标签和id <img i ...
- 他们都说JVM能实际使用的内存比-Xmx指定的少?这是为什么呢
这确实是个挺奇怪的问题,特别是当最常出现的几种解释理由都被排除后,看来JVM并没有耍一些明显的小花招: -Xmx和-Xms是相等的,因此检测结果并不会因为堆内存增加而在运行时有所变化. 通过关闭自适应 ...
- 【IDE】WebStorm 调整Tab缩进为2空格 -- 为遵循ESLint语法规范
步骤一 修改这三处的值为:2 步骤二 把这两处默认的勾选去掉,不让其detection当前文件的Tab缩进 注意! 通过上面两个步骤,我们只是改变了在JS文件的Tab缩进改为2个空格 但是,*.vue ...
- 【笔记】 springCloud--Alibaba--服务注册和服务发现
接着上一次的nacos初步讲解和安装 任意门:https://www.cnblogs.com/Yangbuyi/p/13479767.html 如果启动失败的话 上一篇也是讲解过的. 本文章开始服务注 ...
- JetCache埋点的骚操作,不服不行啊
阐述背景 缓存是应对高并发绝对的利器,在很多业务场景允许的情况下,都可以使用缓存来提供性能. 既然用了缓存,那对缓存进行监控必不可少.比如缓存加载耗时,新增耗时等. 在 JetCache 中进行埋点操 ...