mongodb学习笔记
一、介绍
1、mongodb
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
2、nosql数据库
NoSQL(NoSQL = Not Only SQL ),意即”不仅仅是SQL”。
反之非关系型数据库。
3、mongodb特点
(1)海量数据存储
(2)非结构化
二、mongodb安装
1、docker拉取镜像
2、安装
3、测试
进入admin库,创建用户admin,123456
三、mongodb概念
1、和mysql对比
2、数据存储对比
类似json的格式,叫bson格式。
3、数据库
一个mongodb中可以建立多个数据库。
查看所有数据库:show dbs
查看当前数据库:db
切换数据库:use 数据库名
4、客户端工具
MongoDB Compass
Robo 3T
navicat for mongodb
==
四、数据库操作
1、连接
(1)客户端连接
标准 URI 连接语法:
1 | mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] |
(2)本地命令行
通过 shell 连接 MongoDB 服务:
1 | $ ./mongo |
(3)docker
1 | //连接 |
2、数据库的操作
db.createUser({ user:’admin’,pwd:’123456’,roles:[ { role:’root’, db: ‘admin’}]});
(1)创建和切换数据库
1 | use DATABASE_NAME |
如果数据库不存在,则创建数据库,否则切换到指定数据库。
(2)删除数据库
1 | db.dropDatabase() |
删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。
3、集合操作
(1)创建集合
1 | db.createCollection(name,option) |
(2)删除集合
1 | db.collectionName.drop() |
4、文档操作
(1)插入文档
1 | db.COLLECTION_NAME.insert(document) |
3.2 版本之后新增了 db.collection.insertOne() 和 db.collection.insertMany()
1 | db.collection.insertOne( |
(2)查询文档
1 | db.collection.find(query, projection) |
查询所有:
查询部分:
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {<key>:<value> } |
db.col.find({"by":"菜鸟教程"}).pretty() |
where by = '菜鸟教程' |
小于 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
小于或等于 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
大于 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
大于或等于 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
不等于 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
多条件,默认是and连接。
or连接:
(3)更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。
1 | db.collection.update( |
(4)删除文档
1 | db.collection.remove( |
5、索引操作
索引是提高查询效率。
1 | >db.collection.createIndex(keys, options) |
语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
6、排序
sort({字段名:升序和降序})
升序 1
降序 -1
7、分页
limit()
1 | >db.COLLECTION_NAME.find().limit(NUMBER) |
8、聚合
达式 | 描述 | 实例 |
---|---|---|
$sum | 计算总和。 | db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$sum : “$likes”}}}]) |
$avg | 计算平均值 | db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$avg : “$likes”}}}]) |
$min | 获取集合中所有文档对应值得最小值。 | db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$min : “$likes”}}}]) |
$max | 获取集合中所有文档对应值得最大值。 | db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$max : “$likes”}}}]) |
五、springboot整合spring-data-mongoDB
1、创建一个springboot项目
2、导入依赖
1 | <dependency> |
3、配置mongodb
1 | spring: |
4、实体类映射
1 | package com.example.springbootdatamongo.mongo.domain; |
5、Dao编写
1 | package com.example.springbootdatamongo.mongo.dao; |
6、测试
1 | package com.example.springbootdatamongo; |
7、文档CRUD
(1)添加文档
1 | @Test |
(2)查询文档
查询所有:
1 | @Test |
查询单个:
1 | @Test |
排序:
1 | @Test |
分页:
1 | @Test |
(3)修改文档
1 | @Test |
(4)删除文档
1 | @Test |