zoukankan      html  css  js  c++  java
  • MongoDB 全部笔记

    1. MongoDB: 是NOSQL的一种, 特长是分布式用的,用于处理爬虫数据

    2. mongoDB 与 redis

    mongoDB是最像关系型的非关系型数据,更加适用于大数据,redis则更倾向于,并发较小,数据较小,性能更高

    3. MongoDB的默认端口: 27017

    4. 重要概念
    MongoDB mysql
    数据库 数据库
    集合 表
    文档(类似字典) 记录
    键值对 字段

    #注意: MongoDB中是区分大小写, mysql是不区分大小写
    #注意: MongoDB中表示id的是"_id"


    5. 用户管理
    权限是数据区来做区分的
    想要操作admin 那就在admin下创建用户
    想要操作adb 那就在adb下创建用户
    6. 创建用户

    use admin #使用admin 数据库
    db.createUser({
    "user":"root",
    "pwd":"123",
    roles:[{"role":"root","db":"admin"}]
    })
    ####在admin 数据库内创建用户 , 用户root, 密码为123 权限是root权限, 操作admin库
    key都是固定的不能随便写每一个key都有特殊含义
    其中{"role": "root"} role固定的key root是角色的名字 有可选范围如root readWrite read等等...
    7.如何设置Mongdb的用户认证功能:
    找到配置文件中(bin下) 修改mongod.cfg 增加一个配置项:
    security:
    authorization: enabled
    # 注意缩进
    8. 登录方式: mongo -u "root" -p "123"
    或者: mongo 直接进行游客模式 use 切换到与用户所在的数据库 db.auth("用户名","密码") 返回1为成功 0为失败

    use 数据库名字  创建数据库
    例如: use mydb   #创建数据库mydb 因为里面,没有数据,所以不显示出来
    
    db.dropDatabase() 删除数据库
    
    show dbs 查看所有数据库, #因为mydb 没有添加数据所以不会显示出来
    
    use 切换数据库,#切换数据 如果不存在会自动创建   新建的数据库是查看不到的 因为里面没有数据
    库的操作
    集合的操作(表的操作):
    use mydb
    dd.tt       #创建表,但是没数据,还是不显示
    
    show tables  #查看所有集合
    db.info.drop()   #删除集合
    
    
    记录文档的操作:
    db.user.insert({"_id":1})       #插入一条数据
    
    db.user.insertMany([
        {"_id": 3, "name": "张三封"},
        {"_id": 4, "name": "鹌鹑蛋"}
    ])
    ##插入多条数据
    
    也可以这样:
    user1={
        "_id":1,
        "name":"alex",
        "age":10,
        'hobbies':['music','read','dancing'],
        'addr':{
            'country':'China',
            'city':'weifang'
        }
    }
    db.user.insert(user1)
    
    
    #插入变量:
    user1 = {"_id":10,"name":"王五"}
    db.user.insert(user1)
    
    #如果id已经存在则覆盖, 没有添加
    db.user.save( {"_id":10,"name":"鹌鹑蛋2"}) #因为已经存在,所以,王五变为鹌鹑蛋2
    
    
    db.user.find()  #查询
    db.user.find().pretty() #查询结果格式化
    
    #语句查询:
    db.user.find() # 查询所有  == select *from user
    
    db.user.find({"name":"张三封"}) == select *from user where name = "张三封"
    #查询名字为张三封 全部显示出来
    db.user.find({"name":"张三封","_id":3}) == select *from user where name = "张三封 and _id = 3"
    #查询名字为张三封 且_id 为3 全部显示出来
    
    #比较运算符
    >       <       !=      >=      <=
    gt      lt      ne      gte     lte
    
    db.user.find({"name":{"$ne":"张三封"}})
    
    db.user.find({"_id":{"$gt":3}})
    
    #注意:字段名在外层 条件在里层
    
    逻辑运算符
    and   or  not
    
    db.user.find({"$or":[
       {"name":"张三丰"},
       {"name":"鹌鹑蛋"}
    ]})
    
    =============================================================================
    
    取反
    db.user.find({"_id":{"$not":{"$mod":[2,1]}}})
    
    
    
    # id  在 [1,2]内的
    db.user.find({
        "_id":{"$in":[1,2]}
    })
    
    # id  不在 [1,2]内的
    db.user.find({
        "_id":{"$nin":[1,2]}
    })
    
    
    # 查询指定字段
    db.user.find({},{"name":1,"_id":0})
    1表示展示  0不展示
    _id默认为1  其他默认为0
    
    
    
    
    
     db.student.find({"hobbies":{"$all":["movie","muisc"]}})
    
    
    db.student.find({"hobbies.1":"girl"})    #按照索引进行查询,1是数组的索引
    
    
    
    # 查看所有人的 第一个和第二个爱好
    db.student.find({},{"hobbies":{"$slice":[0,1]}})
    
    
    #   $slice [1,1]  表示的是从第1个开始取1个
    db.student.find({},{"hobbies":{"$slice":[1,1]}})
    表的操作








  • 相关阅读:
    js 隐藏、显示html 标签内容
    Elasticsearch第二章:Elasticsearch6.4.2破解xpack白金认证,以及kibana登录
    Elasticsearch第一章: 安装elasticsearch和kibana
    spring springboot2 结合 websocket+sockJs+stomp 实现个人订阅和广播模式
    MongoDB 查询重复手机号数量
    esxi直通sata控制器给群辉。群辉无法识别全部盘符,无法读取smart
    esxi直通显卡之后 游戏无法打开
    esxi硬盘直通,RDM
    SpringSecurity整合SpringSession-Redis 限制用户登录,SpringSecurity单用户登录
    Spring Security流程解释与配置
  • 原文地址:https://www.cnblogs.com/gukai/p/10712604.html
Copyright © 2011-2022 走看看