MongoDB简单介绍及使用

MongoDB

1. MongoDB 安装配置

MongoDB启动 - cmd - 默认27017 监听端口3306 Mysql;6379 Redis

  • mongod - 启动MongoDB服务 数据库存放路径 默认 C:/data/db or /data/db --dbpath = "D:/data/db" 更改数据库存放路径 --port 更改监听端口

  • mongo 启动客户端

show databases  # 查看当前服务器中的数据库(注意进查看当前磁盘空间中的数据库)
use dbname  # 切换当前使用的数据库(如果是不存在的数据库则在内存中创建)
db      # 查看当前使用的数据库 代指当前数据库名
db(内存中的).tablename # 在内存中创建数据表空间
show tables  # 查看当前数据库活动的数据表
# 注意:
use 不存在的数据库名,居然切换成功了,且db,查看到了当前错误的数据库名。是因为实际在内存中进行了创建,而show databases和tables查看的是磁盘空间
db.users 在一个不知道存在不存在的数据库中创建了一个不知道存在不存在的users表
​
当数据表中存在数据,数据库及数据表均会写入到磁盘中

 

2. MongoDB 中的概念

使用了不存在的对象即创建该对象

JSON结构存储

MysqlMongoDB 
database database 数据库
Tables Collections
Colum Field 字段
Row Documents

3. MongoDB 的数据类型

字段介绍
ObjectID Documents 自生成的 _id # 自增ID 全世界唯一的计数ID
String 字符串,必须是utf-8
Boolean 布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
Integer 整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double 浮点数 (没有float类型,所有小数都是Double)
Arrays 数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object 如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
Null 空数据类型 , 一个特殊的概念,None Null
Timestamp 时间戳
Date 存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

4. MongoDB 的增删改查

增加:

db.tablename.insert({字段:""})
例如:db.users.insert({name:"nihao"})
​
官方推荐:
db.tablename.insertOne({name:"nihao"}) 增加一条数据
db.tablename.insertMany([{name:"niaho"},{name:"niaho"}]) 增加多条数据

 

删除

db.Tables.remove({}) 删除所有符合条件的数据
​
db.tablename.deleteOne({查询条件})  删除符合条件的第一条数据
db.tablename.deleteMany({查询条件}) 删除所有符合条件的数据

 

修改

$修改器

$set 强制将谋值修改覆盖
$unset 强制删除一个字段
$inc 引用增加
针对$array的修改器 以及 $关键字的用法和特殊性
$push 在array中追加数据
$pushAll 在Array中批量增加数据 [] == list.extends
$pull 删除符合条件的所有元素
$pop 删除array中第一条或最后一条数据
$pullAll 批量删除符合条件的元素 []
$关键字 的特殊用法

 

修改示例

db.users.update({name:"nihao"},{"$set":{name:"DSB"}})
db.tablename.update({查询符合条件的数据},{$修改器:{修改的内容}})
修改符合查询条件的第一条数据
​
单个字段 进行修改
$set 强制将谋值修改覆盖
db.users.update({name:"DSB"},{"$set":{age:73,gender:1}})
​
$unset 强制删除一个字段
db.users.update({age:73},{"$unset":{gender:0}})
​
$inc 引用增加
db.users.update({name:"DSB"},{"$inc":{age:1}})
db.users.update({name:"DSB"},{"$inc":{age:-2}})
​
针对$array的修改器 以及 $关键字的用法和特殊性
Array是list 列表类型 
list -> append remove pop extends
Array -> $push $pull  $pop $pushAll $pullAll
$push 在array中追加数据 
db.users.update({name:"MJJ"},{"$push":{"hobby":"抽烟"}})
​
$pushAll 在Array中批量增加数据 [] == list.extends
db.users.update({name:"MJJ"},{"$pushAll":{"hobby":["喝酒","烫头"]}})
​
$pull 删除符合条件的所有元素
db.users.update({name:"MJJ"},{"$pull":{"hobby":"烫头"}})
​
$pop 删除array中第一条或最后一条数据
db.users.update({name:"MJJ"},{"$pop":{"hobby":1}}) 正整数为,删除最后一条数据
db.users.update({name:"MJJ"},{"$pop":{"hobby":-1}}) 负整数为 删除第一条数据
    
$pullAll 批量删除符合条件的元素 []
db.users.update({name:"MJJ"},{"$pullAll":{"hobby":[3,4,5]}})
    
$关键字 的特殊用法
储存符合条件的元素下标索引 - 只能存储一层遍历的索引位置
$ = 9
db.users.update({"hobby":10},{"$set":{"hobby.$":0}})
    
官方推荐:
db.tablename.updateOne({},{}) # 修改符合条件的第一条数据
db.tablename.updateMany({},{}) # 修改符合条件的所有数据

 

查询

$选择器

$and 并列
$or 或者
$in 包含或者 同一字段 或者条件
$all 子集或者 必须是子集 绝对不可以超集 交集是不可查询的

 

示例

简单查:
db.tablename.find() 查找当前数据表中的所有数据
{ "_id" : ObjectId("5d50bdd1399ab50efdf765de") }
{ "_id" : ObjectId("5d50be7c399ab50efdf765df"), "name" : "nihao" }
​
db.tablename.findOne({}) 查询符合条件的第一条数据
db.tablename.find({}) 查询符合条件的所有数据
​
高级查:
db.users.find({age:999}) 查询所有age=999的数据
查询符合条件的所有数据
并列条件 db.users.find({age:999,name:"alex"})
$and 并列 db.users.find({"$and":[{name:"wpq"},{age:1000}]}) 
$or 或者  db.users.find({"$or":[{age:1000},{name:"alex"}]})
$in 包含或者 同一字段 或者条件 db.users.find({"age":{"$in":[999,1000]}})
age 或者等于 999 或者等于 1000
$all 子集或者 必须是子集 绝对不可以超集 交集是不可查询的
db.users.find({"hobby":{"$all":[5,1,3]}})
​
如果查询 _id 那么 数据的值必须带上 ObjectId 的数据类型
db.Users.find({"_id":ObjectId("5d50e778b2a72712f5ee54c5")})
​
​
Object查询时可以直接使用 对象.属性 的方式作为Key
** 当Array中出现了Object 会自动遍历 Object中的属性

 

5. MongoDB 高级函数

三种高级函数:

排序筛选跳过
sort limit skip

用法示例:

排序:
    db.users.find({}).sort({age:-1}) 依照age字段进行倒序
    db.users.find({}).sort({age:1}) 依照age字段进行正序
​
筛选:
    db.users.find({}).limit(4) 筛选前4条数据
​
跳过:
    db.users.find({}).skip(3) 跳过前3条数据 显示之后的所有数据
​
分页
    1.排序 2.跳过 3.筛选
​
    page = 页码 = 1
    count = 条目 = 2
​
    db.users.find({}).limit(2).skip(2).sort({ age:-1 })
​
    limit = count
    skip = (page-1) * count
​
    db.users.find({}).limit(count).skip((page-1)*count).sort({ age:-1 })

 

 

posted @ 2020-04-21 00:11  无夜。  阅读(208)  评论(0编辑  收藏  举报