zoukankan      html  css  js  c++  java
  • 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塞回去
    
  • 相关阅读:
    Python Revisited Day 13 (正则表达式)
    Python Revisited Day 06 (面向对象程序设计)
    Python Revisited (变量)
    Python Revisited Day 05(模块)
    Python Revisited Day 04 (控制结构与函数)
    Python Revisited Day 03 (组合数据类型)
    Numpy
    Python Revisited Day 01
    Python3使用openpyxl读写Excel文件
    Python3操作YAML文件
  • 原文地址:https://www.cnblogs.com/dengz/p/14653856.html
Copyright © 2011-2022 走看看