zoukankan      html  css  js  c++  java
  • MongoDB安装+基础操作

    MongoDB

    一. 安装

    这里展示使用docker安装mongoDB

    • 拉取最新MongoDB镜像
    docker pull mongo
    
    • 运行容器
    docker run -itd --name mongo -p 27017:27017 mongo --auth
    

    --auth:需要密码才能访问容器服务

    • 为mongo添加用户和设置密码
    docoker exec -it mongo mongo admin
    

    创建一个名为 admin,密码为 123456 的用户

    > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
    

    尝试使用上面创建的用户信息进行连接

    > db.auth('admin', '123456')
    
    • 进入mongo
    docker exec -it mongo mongo
    > db.auth('admin', '123456')
    

    二. 入门

    1. 了解基本概念

    SQL术语/概念 MongoDB术语/概念 解释/说明
    database database 数据库
    table collection 数据库表/集合
    row document 数据记录行/文档
    column field 数据字段/域
    index index 索引
    table joins 表连接,MongoDB不支持
    primary key primary key 主键,MongoDB自动将_id字段设置为主键

    RDBMS 与 MongoDB 对应的术语:

    RDBMS MongoDB
    数据库 数据库
    表格 集合
    文档
    字段
    表联合 嵌入文档
    主键 主键 (MongoDB 提供了 key 为 _id )

    下表为MongoDB中常用的几种数据类型。

    数据类型 描述
    String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
    Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
    Boolean 布尔值。用于存储布尔值(真/假)。
    Double 双精度浮点值。用于存储浮点值。
    Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
    Array 用于将数组或列表或多个值存储为一个键。
    Timestamp 时间戳。记录文档修改或添加的具体时间。
    Object 用于内嵌文档。
    Null 用于创建空值。
    Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
    Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
    Object ID 对象 ID。用于创建文档的 ID。
    Binary Data 二进制数据。用于存储二进制数据。
    Code 代码类型。用于在文档中存储 JavaScript 代码。
    Regular expression 正则表达式类型。用于存储正则表达式。

    2. 链接数据库

    uri

    mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
    
    • mongodb:// 这是固定的格式,必须要指定。
    • username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
    • host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
    • portX 可选的指定端口,如果不填,默认为27017
    • /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。
    • ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

    3. 基本语法

    列出所有数据库

    show dbs
    

    注意:空数据库是不显示的

    查看当前所在数据库

    db
    

    创建数据库

    use DATABASE_NAME
    

    如果数据库不存在,则创建数据库,否则切换到指定数据库。

    删除数据库

    db.dropDatabase()
    

    创建集合

    db.createCollection(name, options)
    

    参数说明:

    • name: 要创建的集合名称
    • options: 可选参数, 指定有关内存大小及索引的选项

    options 可以是如下参数:

    字段 类型 描述
    capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。 当该值为 true 时,必须指定 size 参数。
    autoIndexId 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 false。
    size 数值 (可选)为固定集合指定一个最大值,以千字节计(KB)。 如果 capped 为 true,也需要指定该字段。
    max 数值 (可选)指定固定集合中包含文档的最大数量。

    例子:

    db.createCollection("mycol", { capped : true, autoIndexId : true, size : 
       6142800, max : 10000 } )
    
    db.createCollection("mycol")
    

    在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。

    查看集合

    show collections
    

    删除集合

    db.COLLECTION_NAME.drop()
    

    返回值

    如果成功删除选定集合,则 drop() 方法返回 true,否则返回 false。

    插入文档

    db.COLLECTION_NAME.insert(document)
    

    document是个json格式

    更新文档

    update()

    db.collection.update(
       <query>,
       <update>,
       {
         upsert: <boolean>,
         multi: <boolean>,
         writeConcern: <document>
       }
    )
    

    参数说明:

    • query : update的查询条件,类似sql update查询内where后面的。
    • update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
    • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
    • writeConcern :可选,抛出异常的级别。

    例子

    > db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
    

    save()

    db.collection.save(
       <document>,
       {
         writeConcern: <document>
       }
    )
    

    参数说明:

    • document : 文档数据。
    • writeConcern :可选,抛出异常的级别。

    使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

    删除文档

    db.collection.remove(
       <query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )
    

    参数说明:

    • query :(可选)删除的文档的条件。
    • justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
    • writeConcern :(可选)抛出异常的级别。

    如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:

    >db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
    

    查询文档

    db.collection.find(query, projection)
    
    • query :可选,使用查询操作符指定查询条件
    • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

    如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

    >db.col.find().pretty()
    

    除了 find() 方法之外,还有一个 findOne() 方法,它只返回一个文档。

    MongoDB 与 RDBMS Where 语句比较

    如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:

    操作 格式 范例 RDBMS中的类似语句
    等于 {:} db.col.find({"by":"foo"}).pretty() where by = 'foo'
    小于 {:{$lt:}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
    小于或等于 {:{$lte:}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
    大于 {:{$gt:}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
    大于或等于 {:{$gte:}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
    不等于 {:{$ne:}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50

    OR条件

    >db.col.find(
       {
          $or: [
             {key1: value1}, {key2:value2}
          ]
       }
    ).pretty()
    
  • 相关阅读:
    mongodb常用命令(转)
    C++位运算详解(转)
    C++Vector用法(转)
    php下载文件
    二维数组和指针(转)
    php数据采集(转)
    通过PHP实现浏览器点击下载TXT文档(转)
    Linux 文件颜色的含义
    如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件【转】
    X11VNC:让Windows可以远程管理Ubuntu桌面
  • 原文地址:https://www.cnblogs.com/kainhuck/p/12374956.html
Copyright © 2011-2022 走看看