一.MongoDB的下载:https://www.mongodb.com/
二.MongoDB的安装:
1.默认安装,点下一步
2.自定义安装
三.mongodb安装完成后的配置
1.安装完成后配置环境变量path:将mongodb的bin的路径放在path下面
2.在启动mongodb之前需要先在c盘的目录下面建文件夹data/db(默认数据库的路径)
3. 启动mongodb:打开cmd>>>>>>输入mongod 这样就启动了mongodb
- 查看mongodb的帮助:cmd里面mongod --help
- mongod 选项 --dbpath 数据库存放路径
--install 安装windows服务
--remove 卸载windows服务
4.修改mongodb的数据库路径示例:
4.1在D盘创建文件夹mongoDBdatadb
4.2打开cmd>>>>>>>>>>输入mongod --dbpath D:mongoDBdatadb这样就将MongoDB的数据库路径改到了D盘相应的文件夹下面了
四.MongoDB客户端的链接
1.在cmd中启动MongoDB服务 命令是mongod
- 如果出现以下错误,需要在c盘创建相应的文件夹然后再启动mongodb
2.在不关闭MongoDB服务的情况下,重新打开一个cmd窗口运行MongoDB自带的客户端 命令是mongo
五.用MongoDB自带的客户端可以做以下的简单操作
1.show databases 查看本地磁盘数据库
2.use dbname 切换当前使用的数据库
3.db 查看当前使用的数据库
4.show tables 查看当前数据库存放在磁盘上的数据表
5.use+不存在的数据库 创建了数据库 当前创建的数据库没有存放在磁盘中
6.db.tablename 不存在的表名 创建数据表 当前数据表没有存放在磁盘中
- 刚创建的数据库和数据表,是不会放在磁盘上面的,但是如果表里有数据的话就会放在磁盘上面
- 一个概念:- 使用了不存在的对象即创建该对象 - 不限制数据结构
- MongoDB的默认服务端口为 27017 - redis:6379 mysql:3306
六.使用第三方客户端NoSQLBooster4MongoDB来操作MongoDB
1.NoSQLBooster客户端下载地址:https://nosqlbooster.com/downloads
2.创建create 端口是27017
3.NoSQLBooster客户端对表数据的增删改查:
3.1增加数据:
db.tablename.insert({"key":"value"})
官方推荐写法:
db.users.insertOne({})
db.users.insertMany([{},{},{}])
3.2查询数据:
db.tablename.find() 查询符合条件的所有数据
db.tablename.find({"name":"AlexDSB"})
db.tablename.findOne() 查询符合条件的第一条数据
3.3修改数据:
db.tablename.update({"name":"AlexDSB"},{"$set":{"age":84}}) 只修改符合条件的一条数据
$set - set修改器 强制替换覆盖
官方推荐写法
db.tablename.updateOne() 更新符合条件的第一条数据
db.tablename.updateMany() 更新符合条件的所有数据
array+Object : db.users.updateOne({"cours.name":"装X"},{$set:{"cours.$.score":"000"}})
3.4删除数据:
db.tablename.remove({})
db.tablename.remove({age:73}) 删除所有age==73的数据
官方推荐写法
db.users.deleteOne() 删除符合条件的第一条数据
db.users.deleteMany() 删除符合条件的所有数据
4.数据类型
ObjectId :Documents 自动生成的 _id
_id:ObjectId("5cb69a23815ea7295f8bad43") 自动生成的 json数据中不包含ObjectId类型 id类型uuid
String: 字符串,必须是utf-8
Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object:深度<=4 如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳 通常不用这个数据类型 如果存储时间 Double
Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
5.数学比较符:
$lt : 小于 √
$lte: 小于等于 √
$gt : 大于 √
$gte: 大于等于 √
$ne : 不等于
$eq or 冒号 : 等于
6.查询关键字:
Array数据类型会自动遍历
$in 或者等于相同字段 db.users.find({age:{$in:[19,109]}})
$or 或者等于不同字段 db.users.find({$or:[{age:19},{age:84}]})
$and or 逗号 并列条件
$all - Array 数据类型 子集查询 db.users.find({hobby:{$all: ["罗玉凤"]}})
7.$字符特殊用法:
存储符合条件的元素下标索引
用于修改字段
8.修改器:
$set - set修改器 强制替换覆盖
$unset - 强制删除字段
$inc - 引用增加
array操作:
$push append 在array中追加 db.users.update({name:"AlexDSB"},{$push:{hobby:"特斯垃圾"}})
$pushAll extend 在array中追加列表中的所有元素 db.users.update({name:"AlexDSB"},{$pushAll:{hobby:["22寸轮毂","V8","欧林斯"]}})
$pull remove 在array中删除一个元素 db.users.update({name:"AlexDSB"},{$pull: {hobby:"V8"}})
$pullAll 在array中删除一堆元素 db.users.update({name:"AlexDSB"},{$pullAll: {hobby:["小敏","芙蓉姐姐"]}})
$pop pop 删除第一个 -1 或最后一个 1 的值 db.users.update({name:"AlexDSB"},{$pop: {hobby:1}})
9.skip sort limit
sort 排序
db.users.find({}).sort({ age:1 })
db.users.find({}).sort({ age:1 , birthday:-1 })
limit(1) 选取条目
db.users.find({}).limit(3000)
skip(1) 跳过
db.users.find({}).skip(1)
跳过选取
db.users.find({}).skip(2).limit(3)
- 先排序 再跳过 最后筛选
db.users.find({}).limit(3).skip(2).sort({ age:-1 })
分页:
(page-1)*num
db.users.find({}).limit(num).skip((page-1)*num)