zoukankan      html  css  js  c++  java
  • MongoDB1 mongodb介绍, 启动和配置, 账号管理, 数据库操作curd操作, 集合操作

    1 Mongodb介绍

    # 1 一个非关系型数据库(表和表间没联系,不能建外键),文档型数据库(json存储的)
    ## Mongodb可以存特殊的集合类型(一个字段可以存字典,列表)。mysql是不支持这种格式的,如果要存,只能转成json格式存到字段里。实在没办法了,在字段里存json格式,加删数据,把json改下存进去。
    
    # 2 mysql       mongodb
        数据库       数据库(database)
          表          集合(collection)
        行          文档(document)
        列          field(字段)
        索引         索引
        连表         不支持(可以用子查询(表join不支持,像django orm__连表关联查询不支持))#大型项目一般不建外键关联,join。这两种非常异响性能
        主键         将_id字段设为主键
        
    # 3 文档 就是个字典{"name":"lqz","age":18}    ##意味着可以直接传给前端,不需要用orm,把数据转成json格式给前端
    ## 需要注意的点: 
        #文档中的键/值是有序的
        #值可以是字符串,数字,其他集合类型(列表,字典)
        #类型区分大小写
        #文档中不能有重复的键
        #文档中的值可以是多种不同的数据类型,也可以是一个完整的内嵌文档。键可以是任意UTF-8字符
    
    # 4 一组文档组成一个集合
            -小小的问题(可以组成一个文档)
          {"name":"lqz","age":18}
          {"yyy":"yyy","kkk":90}
          {"xxx":"xxx"}
          
    # 5 多个集合组成一个数据库
    
    # 6 安装和启动
        -下载安装包:https://www.mongodb.com/dr/fastdl.mongodb.org/win32/mongodb-win32-x86_64-2012plus-4.2.6-signed.msi/download
      -需要下载个客户端(类似于:Navicat),robo 3T
      
    # 7 安装    # 在linux和mac下,只要把包解压开就行,不需要安装
        -mongodb-win32-x86_64-2012plus-4.2.6-signed.msi一路下一步,将mogodb设置成服务,注意数据目录和日志目录,mongod compass那个玩意不要装    # 最好默认装c盘,经测试装d盘会报权限问题,删服务,用命令建服务
      -robo3t-1.3.1-windows-x86_64-7419c406.exe. 一路下一步
    ## 在服务中可以把mongodb服务改成手动启动,开机不用自动启动
        # net start MongoDB
        # net stop MongoDB

    mongodb安装

     

    robo3t安装

    #### 附上之前自己弄的mongodb3.4.10安装方法和使用
        # https://blog.csdn.net/baidu_31333625/article/details/73126657       配置
        # 客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。 
             # mongo --port 27017 
        # django增删查改
            # https://blog.csdn.net/kuangshp128/article/details/79039366

     

    2 mongodb的启动和配置

    # 1  mongodb的启动命令
    -C:Program FilesMongoDBServer4.2inmongod.exe" --config "C:Program FilesMongoDBServer4.2inmongod.cfg" --service    
    -mongod.exe --config 配置文件
    
    -在mongdb的安装路径下bin路径有:mongod.exe(服务端) 和 mongod.cfg(配置文件)  mongo.exe(客户端)
        
    -在终端到路径下(或加入环境变量)输入mongo.exe,可以连接进去
    show databases; # 可以查看所有的数据库
    -一般我们喜欢用图形化客户端连接:robo3t
        -create---》输入地址,端口号--》连接

    配置文件

    storage:
      dbPath: C:Program FilesMongoDBServer4.2data        # 数据路径
      journal:
        enabled: true
    
    # where to write logging data.
    systemLog:
      destination: file
      logAppend: true
      path:  C:Program FilesMongoDBServer4.2logmongod.log        # 日志文件路径
    
    # network interfaces
    net:
      port: 27017        # 监听的端口号
      bindIp: 0.0.0.0    # 绑定的地址0.0.0.0代表远程可以连接
    
    # 2 可以使用客户端连接
    ./mongo --host 10.0.0.5 --port 27017
    # 3 可以用图形化界面的客户端连接

    3 账号管理

    # 1 跟mysql有点区别:mongodb的用户是建在数据库下的,但是可以对其他库有权限(mysql用户是单独存在库里,也是user表)
        # ——可以用robo3t,在System下admin库下Users表中右键Add User创建用户(也可以用下面方法添加)

    # 2 操作步骤(全局有一个db,在哪个库下,db就是谁)
        -show databases;  # 查看多有数据库
      -use admin;      # 使用admin这个库    # 输入db可以看当前在哪个库下
      -db.createUser(    # db的一个方法,在当前库下创建一个用户
      {
        user: "root",    # 用户名
        pwd: "123",        # 方法
        roles: [ { role: "root", db: "admin" } ]    # 用户的权限,用户管理的数据库(对哪个库操作)
      }
    )    # 创建成功后,可以在图形界面里打开Users表看到
        
    use test # 空数据库不显示
    db.createUser(
      {
        user: "lqz",
        pwd: "123",
        roles: [ { role: "readWrite", db: "test" },    # 权限为读写,针对的是test库
                 { role: "read", db: "db1" } ]        # 权限为只读,针对的是db1库
      }
    )
    # 5 查看用户
    db.getUser("root")    # 参看名字为root的人
    -show users            # 查看当前库下的账户
    
    #### 了解
    #3、重启数据库
    net stop MongoDB
    net start MongoDB
    #需要以开启认证的方式启动mongodb服务
    mongod --config "mongod.cfg" --auth
    
    #4、登录:注意使用双引号而非单引号
    #以管理员登陆
    ./mongo --host 10.0.0.5 --port 27017 -u "root" -p "123" --authenticationDatabase "admin"
    # 以用户lqz登陆(只对test库有权限)
    ./mongo --host 10.0.0.5 --port 27017 -u "lqz" -p "123" --authenticationDatabase "test"
    mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin"
    
    也可以在登录之后用db.auth("账号","密码")登录
    mongo
    show dbs
    use admin
    # db是一个全局变量,代表当前所有库
    db.auth("root","123")
    show tables;

     

    4 数据库的curd操作

    # 增加
    use test   # 有就进去,没有就创建并进去(如没有数据,表并没真正生成) # 输入db可以看当前是什么库
    db.t1.insert({"name":"lqz"})  # 库,集合,文档全都进去了(朝test库下面的t1表里插入数据,表会生成)
    #注意: db.t1.insert({"yy":"lqz"}) # db.t1.insert({"xx":"lqz"})    ## 字段完全不一致也可以插入
    
    # 查询
    show databases;
    show dbs    # 两种方法都行
    
    # 删除
    use test #先切换到要删的库下
    db.dropDatabase() #删除当前库

    5 集合操作

    # 新增
    use test
    db.table1.insert({"name":"lqz"}) # 有table1就使用,没有就新增(此处若没test,也会创建)
    db.table2.insert({'b':2})
    # 查询(都可以)
    show tables    # 为了和mysql统一语法
    show collections
    # 删除
    db.table1.drop()

     

  • 相关阅读:
    c#遍历一个对象中所有的属性和值
    Redis和Memchaed缓存数据查询
    ASP.NET结合Redis实现分布式缓存
    C#使用Spire.Doc Word for .Net读写Word
    DataTable序列化
    ASP.NET网站不能在VS中调试
    winform窗体运行时的大小和设计时不一致
    ajax请求aspx.cs后台方法
    jQuery判断鼠标滚动方向
    使用MagickNet编辑图片
  • 原文地址:https://www.cnblogs.com/ludingchao/p/14137445.html
Copyright © 2011-2022 走看看