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塞回去
    
  • 相关阅读:
    Shell 学习笔记之函数
    Shell 学习笔记之条件语句
    Shell 学习笔记之运算符
    Shell 学习笔记之变量
    [LeetCode] Zuma Game 题解
    [LeetCode] Decode String 题解
    [LeetCode] Pacific Atlantic Water Flow 题解
    TCP的建立和终止 图解
    [LeetCode] 01 Matrix 题解
    java中protect属性用法总结
  • 原文地址:https://www.cnblogs.com/dengz/p/14653856.html
Copyright © 2011-2022 走看看