zoukankan      html  css  js  c++  java
  • MongoDB

    MongoDB基础知识

    MongoDB是一款强大、灵活、且易于扩展的通用型数据库

    1、文档是MongoDB的核心概念。文档就是键值对的一个有序集{'msg':'hello','foo':3}。类似于python中的有序字典。

    需要注意的是:
    #1、文档中的键/值对是有序的。
    #2、文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
    #3、MongoDB区分类型和大小写。
    #4、MongoDB的文档不能有重复的键。
    #5、文档中的值可以是多种不同的数据类型,也可以是一个完整的内嵌文档。文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
    
    文档键命名规范:
    #1、键不能含有 (空字符)。这个字符用来表示键的结尾。
    #2、.和$有特别的意义,只有在特定环境下才能使用。
    #3、以下划线"_"开头的键是保留的(不是严格要求的)。

    2、集合就是一组文档。如果将MongoDB中的一个文档比喻为关系型数据的一行,那么一个集合就是相当于一张表

    #1、集合存在于数据库中,通常情况下为了方便管理,不同格式和类型的数据应该插入到不同的集合,但其实集合没有固定的结构,这意味着我们完全可以把不同格式和类型的数据统统插入一个集合中。
    
    #2、组织子集合的方式就是使用“.”,分隔不同命名空间的子集合。
    比如一个具有博客功能的应用可能包含两个集合,分别是blog.posts和blog.authors,这是为了使组织结构更清晰,这里的blog集合(这个集合甚至不需要存在)跟它的两个子集合没有任何关系。
    在MongoDB中,使用子集合来组织数据非常高效,值得推荐
    
    #3、当第一个文档插入时,集合就会被创建。合法的集合名:
    集合名不能是空字符串""。
    集合名不能含有字符(空字符),这个字符表示集合名的结尾。
    集合名不能以"system."开头,这是为系统集合保留的前缀。
    用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

     3、数据库:在MongoDB中,多个文档组成集合,多个集合可以组成数据库

    数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串:
    #1、不能是空字符串("")。
    #2、不得含有' '(空格)、.、$、/、和 (空字符)。
    #3、应全部小写。
    #4、最多64字节。
    
    有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
    #1、admin: 从身份认证的角度讲,这是“root”数据库,如果将一个用户添加到admin数据库,这个用户将自动获得所有数据库的权限。再者,一些特定的服务器端命令也只能从admin数据库运行,如列出所有数据库或关闭服务器
    #2、local: 这个数据库永远都不可以复制,且一台服务器上的所有本地集合都可以存储在这个数据库中
    #3、config: MongoDB用于分片设置时,分片信息会存储在config数据库中

    MongoDB安装

     

    1、安装完成后把F:MongoDBin目录添加到环境变量中

    2、新建目录与文件

    D:MongoDBdatadb
    D:MongoDBlogmongod.log

    3、制作系统服务

    在命令行指定配置
    mongod --bind_ip 0.0.0.0 --port 27017 --logpath F:MongoDBlogmongod.log --logappend --dbpath F:MongoDBdatadb  --serviceName "MongoDB" --serviceDisplayName "MongoDB"  --install

    4、启动关闭服务

    net start MongoDB
    net stop MongoDB

    5、登录:

    mongo

    账号管理

    创建账号密码+开启认证机制
    # 账号管理:https://docs.mongodb.com/master/tutorial/enable-authentication/
    
    1、创建账号
    
    # use xxx 没有xxx库有就建xxx数据库,有就切换到xxx数据库下
    # db代表当前数据库
    # 注意:mongoDB的账号是建立在库里面的,如果要创建超级管理员账号,则库指定为admin
    # role表示权限,db表示权限对应的库
    
    # 创建超级管理员账号
    use admin
    
    db.createUser(
      {
        user: "root",
        pwd: "123",
        roles: [ { role: "root", db: "admin" } ]
      }
    )
    
    # 创建普通账号
    use test
    db.createUser(
      {
        user: "egon",
        pwd: "123",
        roles: [ { role: "readWrite", db: "test" },
                 { role: "read", db: "db1" } ]
      }
    )
    
    #2、重启数据库
    mongod --remove
    mongod --config "C:mongodbmongod.cfg" --bind_ip 0.0.0.0 --install --auth
    
    #3、登录:注意使用双引号而非单引号
    mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin"
    
    或者登录之后用db.auth("账号","密码")登录
    mongo
    use admin
    db.auth("root","123")
    
    #推荐博客:https://www.cnblogs.com/zhoujinyi/p/4610050.html
    库操作:
        增
            use db1 # 有库切换,无则新增
    
        查
            show dbs # 查看所有
    
        删
            db.dropDatabase()
    
    集合(表)操作:
        增
            db.user
    
        查:
            show collections
            show tables
    
        删:
            db.user.drop()
    文档:
        增
            db.user.insert({"_id":1,"name":"hank"})
    
        删
  • 相关阅读:
    周报说明8-4
    周报7-28
    日志-maven-c监控 周报7-21
    证明创建runnable实例和普通类时间一样长, 其实吧
    UE4开始之路
    js简单框架设计
    json中key为数字会自动排序问题
    u3动画
    工厂模式
    单例模式
  • 原文地址:https://www.cnblogs.com/baohanblog/p/12689101.html
Copyright © 2011-2022 走看看