MongoDB

MongoDB

一丶MongoDB的初识

# 1. MongoDB 是非关系数据库 , 文件存储类型.   
	# "引用不存在的 对象 , 创建这个对象"

# 2. 默认监听端口 27017

# 3. Windows 启动Mongdb 指定数据存储文件 --dbpath="d:/data/db"

# 4. MongoDB 存储数的数据类型是 JSON格式

二丶Mongodb的指令

# 1. 查看 数据库
	show databases;
# 2. 切换使用的数据库 
	 use databasename;
# 3. db 查看当前使用的数据库
# 4. show tables 查看当前数据库磁盘中的表

# 5. 新建数据库
	use 不存在的数据库名. 即,在"内存"中创建该数据库
# 6. db.不存在的表名  即,在当前数据库创建一张表(内存)

三丶CRUD 基础 增删改查

### 新增
     语法: db.tablename.insert({})
     db.user.insert({name:"沙悟净",age:66.66,hobby:[1,2,3,4]})

### 查询
	# find 查询 ,   {查询条件}  即 查询所有符合条件的数据
    	 语法: db.table.find({单查询条件})
          eg : db.table.find({name:'沙悟净'}) 
         
          语法:  db.table.find({多条件})
          eg : db.table.find({name:'沙悟净',age:22})
           
    # findOne({}) 查询符合条件的第一条数据,返回JSON数据
       db.table.findOne({name:'沙悟净'})
    
    
    #   "$" 数据比较符
    	$lt 小于    $lte 小于等于  
         $gt 大于    $gte 大于等于
         $eq 等于     $ne 不等于

### 修改 更新
	# 全部基于 修改器 "$"关键字
    	$set     $unset   $inc   (常用)
        $push    $pushAll  $pull  $pullAll  针对Array List 操作
    
    # $set 强制的将某字段进行修改
    	db.user.update({age:22},{$set:{age:18}})
    # $set 如果该字段不存在,即创建该字段并赋值
    	db.user.update({name:"沙悟净"},{$set:{ag22e:22}})
    # $unset 删除字段
    	db.user.update({name:'沙悟净'},{$unset:{ag22e:22}})
    # $inc 引用增加 , 先引用原有数据,在原有数据基础上增加
    	db.user.update({name:'沙悟净'},{$inc:{age:1}}) # 增加
        db.user.update({name:'沙悟净'},{$inc:{age:-1}}) # 减去
        
    # $push  ==  append()  在array最末端添加一条数据
    	db.user.update({name:'沙悟净'},{$push:{hobby:"8"}})
    
    # $pushAll == extends() 在array最末端添加多条数据
    	
    # $pull == remove()   遍历所有,删除10 所有这个值
    	db.user.update({name:'沙悟净'},{$pull:{hobby:10}}) 
         
    # $pullAll  删除多条数据  删除所有符合条件的数据
    	db.user.update({name:'沙悟净'},{$pullAll:{hobby:10}}) 
    
    # $pop  ~=pop()   删除Array中的第一条或最后一条
    	db.user.update({name:'沙悟净'},{$pop:{hobby:-1}})   删除第一个数据
        db.user.update({name:'沙悟净'},{$pop:{hobby:1}})   删除最后一个数据
        
        
### 删除
	语法: db.tablename.remove({查询条件})  删除符合条件的所有数据
     eg: db.user.remove({age:22}) # 删除年龄为22 的数据
     
      # 注意操作
         db.user.remove({})  # 相当于清空数据库

四丶官方推荐语法 , `### 关键字

#  增 	官方推荐写法 in 3.2:
	db.user.insertOne({}) 增加一条数据
	db.user.insertMany([{},{}])	批量增加数据
    
#  修改  官方推荐的写法
	db.user.updateOne({},{}) 修改符合条件的第一条数据
	db.user.updateMany({},{}) 修改符合条件的所有数据
    
#   删除 官方推荐的写法
	db.user.deleteOne({}) # 删除符合条件的第一条数据
	db.user.deleteMany({}) # 删除所有符合条件的数据 危险! 如果条件为空则删除所有数据
    
    
####   "$"  是用来存储符合当前Array条件元素的下标索引  
        db.user.updateOne({name:"太白金星","stdent.name":"MPy"},{$set:{"stdent.$.name":"Anyway"}})

        db.user.updateOne({name:"太白金星",hobby:"喝酒"},{$set:{"hobby.$":"飙车"}})
        
        # 1. 当前 array ["抽烟","喝酒","剃头"]
        # 2. 条件元素 {hobby:"喝酒"}
        # 3. 当前array 第2个元素符合条件,它的索引是1
        # 4. $的值就是1
        ###注意:
        	如果使用".索引"的方式来操作Array, 必须用引号包含 "字段.索引位"

五丶MongoDB的数据类型

ObjectID :Documents 自生成的 _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类型,时间戳可以秒杀一切时间类型)


六丶选取 跳过 排序

### 排序  
	db.user.find({}).sort({age:-1}) 倒序
	db.user.find({}).sort({age:1})	正序
### 跳过
	db.user.find({}).skip(跳过条目) 跳过
### 选取
	db.user.find({}).limit(300) 选取300条数据
	如果数据条目小于300 则全部查询
	大于300 则只查询300条
    
    
# 组合使用时的优先级:  排序 > 跳过   > 选取   
####  当3个关键全部出现在一条语句中时,先排序 再跳过 再选取
db.user.find({}).sort({age:-1}).skip(1).limit(2)


### 分页逻辑 
	# PageCount 一页展示几条  2
    #  CurrentPageNum 当前页码数
    
    data=skip(CurrentPageNum-1)*count
    
    db.user.find({}).sort({age:-1}).skip(page-1*count).limit(count) 

七丶MongoDB高级操作

###  $all $in 针对 Array
#  $in   范围查询
	db.user.find({'字段':{"$in":[{条件1},{条件2}]}})
    res = list(MongoDB.user.find({"name":{"$in":[123,222,55,66,7]}}))
    res = list(MongoDB.user.find({"hobby":{"$in":[0]}}))
    
#  $all  真 子集查询
	db.user.find({'字段':{'$all':[符合的条件1,符合条件2]}})
    res = list(MongoDB.user.find({"hobby":{"$all":[1,7,3,9,0]}})) # 子集查询
    
#  $or  或条件
	db.user.find({'$or':[{条件1},{条件2}]})
 	res = list(MongoDB.user.find({"$or":[{"name":123},{"age":999}]})) # 或条件    
    
#  $and  并列查询
	db.user.find({'$and':[{条件1},{条件2}]})
	res = list(MongoDB.user.find({"$and":[{"name":"Alexander"},{"age":999}]})) # 并列条件

八丶危险操作

# 危险操作 之 删除表
	### 删表
    # MongoDB.user.drop() 删除表操作 没有确认过程 直接删除
	
    ### 危险操作 之 删除库
    # MongoDB.dropDatabase() 删除数据库操作 没有确认过程 直接删除
    
#### 额外
	可以利用python ,将数据从MongoDB中查出,修改,并直接依据objectid塞回去
原文地址:https://www.cnblogs.com/dengz/p/14653856.html