Mongodb 教程

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

安装

社区版安装

Mac

Mac系统 可以通过Homebrew安装

 brew update
 brew install mongodb

要安装具有TLS / SSL支持的MongoDB二进制文件

brew install mongodb --with-openssl

安装最新开发版本

brew install mongodb --devel

Linux

  • 下载和安装
  curl -O https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.5.10.tgz

  tar -zxvf mongodb-osx-x86_64-3.5.10.tgz

  mkdir -p mongodb

  cp -R -n mongodb-osx-x86_64-3.5.10/ mongodb
  • 配置环境变量 编辑 ~/.bashrc
    export PATH=<mongodb-install-directory>/bin:$PATH

运行

  1. 创建数据目录

在首次启动MongoDB之前,请创建mongod进程将写入数据的目录。
默认情况下,mongod进程使用/data /db目录。
如果创建一个除此之外的目录,则必须在此过程稍后再启动mongod进程时
dbpath选项中指定该目录。

  1. 设置数据目录读写权限
    chmod 755 -R /data/db
  1. 运行 Mongo DB

    mongod # 默认使用/data/db
    
    # 如果你的PATH 没有加入mongod 的目录
    <path to binary>/mongod
    
    # 可以通过 --dbpath 指定数据目录
    mongod --dbpath <path to data directory>
    
  2. 开始使用Mongo DB
    停止运行,按键Ctrl + C 在mongod 所运行的终端

Mongo Shell

要启动mongo shell并连接到在localhost上运行的MongoDB实例使用默认端口:27017

  1. 在终端窗口中提示(或Windows的命令提示符),进入您的mongodb安装目录:
    cd <mongodb installation dir>
    ./bin/mongo
    
  2. 可选参数

    .mongorc.js 文件

    启动时,mongo会检查用户的HOME目录,找到一个名为.mongorc.js的JavaScript文件。
    如果找到,mongo首先解释.mongorc.js的内容,然后再显示提示。
    如果您使用shell来评估JavaScript文件或表达式,可以通过在命令行中使用--eval选项,或者通过将.js文件指定为mongomongo将在JavaScript完成处理之后读取.mongorc.js文件

    您可以通过使用--norc选项来阻止.mongorc.js被加载。

  3. 全局配置文件

    UNIX 环境 /etc/mongorc.js
    WIndows 环境 %ProgramData%\ MongoDB 目录中。

  4. 使用

    要使用身份验证和非标准端口连接到远程主机上的数据库,请使用以下格式:

    mongo --username  --password  --host  --port 28015
    

    或者简单形式

        mongo -u <user> -p <pass> --host <host> --port 28015
    

    要在启动shell会话之前不执行〜/ .mongorc.js文件执行JavaScript文件,请使用以下格式:

        mongo --shell --norc alternate-environment.js
    

    要通过身份验证执行JavaScript文件,使用提示而不是命令行提供的密码,请使用以下格式:

        mongo script-file.js -u <user> -p
    

    要打印以JSON格式返回查询,请使用--eval选项从系统提示符中使用以下格式:

    mongo --eval 'db.<collection>.find().forEach(printjson)'
    

    mongo db 配置文件

  5. 命令
 mongod --config /etc/mongod.conf
 mongos --config /etc/mongos.conf

# 或者 简化形式
mongod -f /etc/mongod.conf
mongos -f /etc/mongos.conf
  1. 配置文件YAML
    注意yaml 不能使用制表符缩进,要用空格
 systemLog:
   destination: file
   path: "/var/log/mongodb/mongod.log"
   logAppend: true
 storage:
   journal:
      enabled: true
processManagement:
   fork: true
net:
   bindIp: 127.0.0.1
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false

命令 CRUD 操作

创建

MongoDB提供以下方法将文档插入到集合中:

在MongoDB中,插入操作指向单个集合。 MongoDB中的所有写入操作都是基于单个文档的级别的。
enter description here

    db.collection('inventory').insertMany([
      { item: "journal",
        qty: 25,
        tags: ["blank", "red"],
        size: { h: 14, w: 21, uom: "cm" }},
      { item: "mat",
        qty: 85,
        tags: ["gray"],
        size: { h: 27.9, w: 35.5, uom: "cm" }},
      { item: "mousepad",
        qty: 25,
        tags: ["gel", "blue"],
        size: { h: 19, w: 22.85, uom: "cm" }}
    ])
    .then(function(result) {
      //result 是一个_id 数组

    })

读取

enter description here

    var cursor = db.collection('inventory')
    .find({ 
          size: { h: 14, w: 21, uom: "cm" }
    });

    // 高度小于 15
    var cursor = db.collection('inventory').find({ 
          "size.h": { $lt: 15 }
    });

修改

enter description here

删除

enter description here

全文搜索

MongoDB支持执行字符串内容的文本搜索的查询操作。要执行文本搜索,MongoDB使用文本索引和$text操作符。
例子

 # 创建商店
 db.stores.insert(
   [
     { _id: 1, name: "Java Hut", description: "Coffee and cakes" },
     { _id: 2, name: "Burger Buns", description: "Gourmet hamburgers" },
     { _id: 3, name: "Coffee Shop", description: "Just coffee" },
     { _id: 4, name: "Clothes Clothes Clothes", description: "Discount clothing" },
     { _id: 5, name: "Java Shopping", description: "Indonesian goods" }
   ]
)

全文索引

要执行文本搜索查询,您必须在集合上具有文本索引。一个集合只能有一个文本搜索索引,但该索引可以覆盖多个字段。

db.stores.createIndex( { name: "text", description: "text" } )

操作
您可以使用以下查询来查找包含“coffee”,“shop”和“java”列表中任何术语的所有商店:

    db.stores.find( { $text: { $search: "java coffee shop" } } )

您还可以通过将其包装成双引号来搜索确切的短语。例如,以下将找到包含“java”或“咖啡店”的所有文档:

 db.stores.find( { $text: { $search: "java \"coffee shop\"" } } )

要排除一个单词,您可以添加一个“ - ”字符。例如,要查找包含“java”或“shop”而不是“coffee”的所有商店,请使用以下命令:

db.stores.find( { $text: { $search: "java shop -coffee" } } )
db.stores.find(
       { $text: { $search: "java coffee shop" } },
     { score: { $meta: "textScore" } })
   .sort( { score: { $meta: "textScore" } } )

可视化管理工具

MongoDB Cloud Manager

MongoDB Cloud Manager是官方推出的运维自动化管理系统,是企业版才支持的功能,社区用户也可以下载试用。

  • MongoDB 集群(复制集、分片)的自动化部署
  • 集群监控、及报警定制
  • 自动数据备份与还原

MongoDB compass

MongoDB compass 也是官方推出的可视化管理工具,企业版才支持,compassCloud Manager 功能互补,Cloud Manager 偏向于部署、运维、监控,而 compass 则偏向于数据管理、查询优化等,其主要功能包括

  • 数据分布可视化,自动分析各个字段取值的分布情况
  • 支持 CRUD 操作
  • 索引自动分析及优化建议
  • explain 的结果可视化

MongoDB Atlas

MongoDB官方提供的 DBaaS 服务(Database as a Service),目前支持在 Amazon AWS 上构建 MongoDB 的云服务,未来有可能会支持更多的云厂商( 例如AzureAlibaba Cloud等)并通过Cloud Manager + compass 来提供可视化的数据管理。


   转载规则


《Mongodb 教程》 Shaojun Liu 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Mongodb 数据备份和权限 Mongodb 数据备份和权限
Mongodb 数据管理操作,导入导出,权限管理。 数据导出mongodump -h 127.0.0.1:27017 -d <db> -o <path> [-u -p] 数据导入mongorestore —host 12
2017-08-02
下一篇 
IOS抓包工具 IOS抓包工具
在iOS开发过程中,抓包是常见的必备技能之一。这里我们主要介绍一下Mac下的抓包利器Charles(文中版本:4.0.1)。它可以非常方便的抓取Http/Https请求,从而提高我们的开发效率。本文中不提供破解版安装使用说明(网上一大堆)
2016-11-23
  目录