概念理解:
MongoDB
是面向文档存储的数据库,是最像关系型数据库的非关系数据库。(NOSQL
数据库)
存储的是一个个JSON
格式的数据。
适用于存储大量的低价值数据,用于对象及JSON
数据存储,可用于缓存。
数据类型理解:
数据库 database
集合 collections (表)
相当于平时的表,但是不固定结构,里面结构由文档自己决定
只是一个存放文档数据的集合,相当于文件夹而已。
只有插入文档数据后集合才实际被创建。
文档 document (记录)
固定数据的结构,数据结构全部是
JSON
类型,不同文档相当于不同的
JSON
对象,可以拥有不同的数据字段。有序,区分类型和大小写
数据字段 field (字段)
文档里的每一个数据字段 等价于
json
对象里的每一个key:value
键值对
索引 index
不支持表连接
自动生成_id字段作为主键
MongoDB与Redis的区别:
就Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。
Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;
MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活。
MongoDB和Redis都是NoSQL,采用结构型数据存储。
MongoDB4.0已支持多文档事务操作。
总结:
Redis的TPS(吞吐量)性能较高,操作简单,功能单一,用于进程中,适用于小数据量。
MongoDB的存储量更大,功能更多,可用于集群部署,适用于大数据量。
基本操作
基础
db.集合名.insert(xx) //创建集合插入记录
db.集合名.drop() //删除集合
db.集合名.find() //查询
db.集合名.update() //更新
db.集合名.remove() //删除
例子
//批量增加记录
db.dept.insert([{"deptno":10,"dname":"java"},{"deptno":20,"dname":"javaee"}])
//删除deptno=10的记录
db.dept.remove({"deptno":10})
//整条文档更新,会将整个json对象盖掉
//查询deptno=30的记录,替换成phone=13544444
db.dept.update({"deptno":30},{"phone":"1354444444"})
//文档部分更新,修改某个属性值,只改第一条文档
//查询deptno=30的记录,修改phone成phone=13544444
db.dept.update({"deptno":30},{$set:{"phone":"1354444444"}})
//部分更新,修改某个属性值,可以改变所有符合条件的文档
db.dept.update({"deptno":30},{$set:{"phone":"1354444444"}},{multi:true})
//查询deptno=10的记录
db.dept.find({"deptno":10})
索引
db.collection.createIndex(keys, options)
对数组内的字段,或者对象的子字段,创建相应索引,再根据这些字段查询记录。
多表关联
主要分嵌入式和引用式。
嵌入:把多表数据嵌入到一表中
引用:把多表id嵌入到一表中
Spring整合
maven导包,
xml配置连接池mongo
xml配置操作工具mongoTemplate
使用直接使用操作工具进行操作,类似redis工具类
[spring的整合](