MongoDBMongoDB入门


备注

  • 移动应用进入市场后,全球数据开始大幅增长。传统的关系数据库 - SQL几乎无法处理大量数据。引入NoSQL数据库来处理那些数据,其中更多的灵活性来自每个数据的可变列数。
  • MongoDB是领先的NoSQL数据库之一。每个集合都包含许多JSON文档。可以在JSON文档中表达的任何数据模型都可以轻松存储在MongoDB中。
  • MongoDB是一个服务器客户端数据库。服务器通常使用二进制文件mongod运行,客户端使用mongo运行。
  • 出于各种哲学和实用的原因 ,在v.3.2之前的MongoDB中没有连接操作。但是Mongo shell支持javascript,所以如果$ lookup不可用,可以在插入之前在javascript中模拟文档的连接操作。
  • 要在生产环境中运行实例,强烈建议您遵循操作清单

版本

发布日期
3.4 2016年11月29日
3.2 2015年12月8日
3.0 2015年3月3日
2.6 2014年4月8日
2.4 2013年3月19日
2.2 2012-08-29
2.0 2011-09-12
1.8 2011-03-16
1.6 2010-08-31
1.4 2010-03-25
1.2 2009-12-10

mongo shell上的基本命令

显示所有可用数据库:

show dbs;
 

选择要访问的特定数据库,例如mydb 。如果mydb 尚不存在,这将创建mydb

use mydb;
 

显示数据库中的所有集合(请务必先选择一个,见上文):

show collections; 
 

显示可以与数据库一起使用的所有函数:

db.mydb.help();
 

要检查当前选定的数据库,请使用命令db

> db
mydb
 

db.dropDatabase() 命令用于删除现有数据库。

db.dropDatabase()
 

补充条款

SQL术语 MongoDB条款
数据库数据库
采集
实体/行文献
键/字段
表加入 嵌入式文件
首要的关键 主键 (mongodb本身提供的默认键_id

在MongoDB中执行JavaScript文件

./mongo localhost:27017/mydb myjsfile.js
 

说明:此操作在mongo shell中执行myjsfile.js 脚本,该shell连接到可通过端口27017 上的localhost 接口访问的mongod 实例上的mydb 数据库。 localhost:27017 不是必需的,因为这是mongodb 使用的默认端口。

此外,您可以从mongo 控制台中运行.js 文件。

>load("myjsfile.js")
 

你好,世界

安装过程之后,应在mongo shell(客户端终端)中输入以下行。

> db.world.insert({ "speech" : "Hello World!" });
> cur = db.world.find();x=cur.next();print(x["speech"]);
 

你好,世界!

说明:

  • 在第一行中,我们在默认数据库test 和名为world 的集合中插入了一个{ key : value } 配对文档。
  • 在第二行中,我们检索刚刚插入的数据。检索到的数据保存在名为cur 的javascript变量中。然后通过next() 函数,我们检索了第一个也是唯一的文档,并将其保存在另一个名为x js变量中。然后打印提供密钥的文档的值。

安装

要安装MongoDB,请按照以下步骤操作:

  • 对于Mac OS:

    • Mac OS有两个选项:手动安装或自制程序
    • 使用自制软件安装:
      • 在终端中键入以下命令:
        $ brew install mongodb
         
    • 手动安装:
      • 此处下载最新版本。确保下载相应的文件,特别检查您的操作系统类型是32位还是64位。下载的文件格式为tgz

      • 转到下载此文件的目录。然后键入以下命令:

        $ tar xvf mongodb-osx-xyz.tgz
         

        而不是xyz ,会有一些版本和系统类型信息。提取的文件夹与tgz 文件的名称相同。在文件夹中,它们将是一个名为bin 的子文件夹,它将包含几个二进制文件以及mongodmongo

      • 默认情况下,服务器将数据保存在文件夹/data/db 。因此,我们必须创建该目录,然后运行具有以下命令的服务器:

        $ sudo bash
        # mkdir -p /data/db
        # chmod 777 /data
        # chmod 777 /data/db
        # exit
         
      • 要启动服务器,应从当前位置给出以下命令:

        $ ./mongod
         

        默认情况下,它将在端口27017上启动服务器。

      • 要启动客户端,应打开一个具有与以前相同目录的新终端。然后,以下命令将启动客户端并连接到服务器。

        $ ./mongo
         

        默认情况下,它连接到test 数据库。如果您看到connecting to: test 的行connecting to: test 。然后您已成功安装MongoDB。恭喜!现在,您可以测试Hello World更加自信。

  • 对于Windows:

    • 此处下载最新版本。确保下载相应的文件,特别检查您的操作系统类型是32位还是64位。

    • 下载的二进制文件具有扩展名exe 。运行。它将提示安装向导。

    • 单击下一步

    • 接受许可协议,然后单击“ 下一步”

    • 选择完整安装。

    • 单击“ 安装” 。它可能会提示一个窗口询问管理员的权限。单击

    • 安装完成后单击Finish

    • 现在,mongodb安装在路径C:/Program Files/MongoDB/Server/3.2/bin 。而不是版本3.2,可能会有一些其他版本的案例。路径名称将相应更改。

    • bin 目录包含几个二进制文件以及mongodmongo 。要从其他文件夹运行它,您可以在系统路径中添加路径。去做吧:

      • 右键单击我的电脑,然后选择属性
      • 单击左窗格中的“ 高级系统设置 ”。
      • 单击“ 高级”选项卡下的“ 环境变量... ”。
      • System variables部分中选择Path ,然后单击Edit ...。
      • 在Windows 10之前,添加一个分号并粘贴上面给出的路径。在Windows 10中,有一个用于添加新路径的“ 新建”按钮。
      • 单击“ 确定”以保存更改。
    • 现在,创建一个名为data 的文件夹,其中包含要在其中运行服务器的名为db 的子文件夹。

    • 从他们的启动命令提示符。更改cmd中的路径或单击此处打开命令窗口 ,在按住Shift和Ctrl键同时右键单击文件夹GUI的空白区域后可以看到该窗口

    • 编写命令以启动服务器:

      > mongod
       

      默认情况下,它将在端口27017上启动服务器。

    • 打开另一个命令提示符并键入以下内容以启动客户端:

      > mongo
       
    • 默认情况下,它连接到test 数据库。如果您看到connecting to: test 的行connecting to: test 。然后您已成功安装MongoDB。恭喜!现在,您可以测试Hello World更加自信。

  • 对于Linux:除了一些等效命令外,几乎与Mac OS相同。

    • 对于基于Debian的发行版(使用apt-get ):
      • 导入MongoDB存储库密钥。

        $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
        gpg: Total number processed: 1\
        gpg:               imported: 1  (RSA: 1)
         
      • 将存储库添加到Ubuntu 16.04上的软件包列表中。

        $ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
         
      • Ubuntu 14.04上

        $ echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
         
      • 更新包列表。

        $ sudo apt-get update
         
      • 安装MongoDB。

        $ sudo apt-get install mongodb-org
         
    • 对于基于Red Hat的发行版(使用yum ):
      • 使用您喜欢的文本编辑器。

        $ vi /etc/yum.repos.d/mongodb-org-3.4.repo

      • 粘贴以下文字。

        [mongodb-org-3.4]
        name=MongoDB Repository
        baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
        gpgcheck=1
        enabled=1
        gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
         
      • 更新包列表。

        $ sudo yum update
         
      • 安装MongoDB

        $ sudo yum install mongodb-org
         

使得find的输出在shell中可读

我们在收集测试中添加了三条记录:

> db.test.insert({"key":"value1","key2":"Val2","key3":"val3"})
WriteResult({ "nInserted" : 1 })
> db.test.insert({"key":"value2","key2":"Val21","key3":"val31"})
WriteResult({ "nInserted" : 1 })
> db.test.insert({"key":"value3","key2":"Val22","key3":"val33"})
WriteResult({ "nInserted" : 1 })
 

如果我们通过find看到它们,它们看起来会非常难看。

> db.test.find()
{ "_id" : ObjectId("5790c5cecae25b3d38c3c7ae"), "key" : "value1", "key2" : "Val2
", "key3" : "val3" }
{ "_id" : ObjectId("5790c5d9cae25b3d38c3c7af"), "key" : "value2", "key2" : "Val2
1", "key3" : "val31" }
{ "_id" : ObjectId("5790c5e9cae25b3d38c3c7b0"), "key" : "value3", "key2" : "Val2
2", "key3" : "val33" }
 

要解决此问题并使其可读,请使用pretty ()函数。

> db.test.find().pretty()
{
        "_id" : ObjectId("5790c5cecae25b3d38c3c7ae"),
        "key" : "value1",
        "key2" : "Val2",
        "key3" : "val3"
}
{
        "_id" : ObjectId("5790c5d9cae25b3d38c3c7af"),
        "key" : "value2",
        "key2" : "Val21",
        "key3" : "val31"
}
{
        "_id" : ObjectId("5790c5e9cae25b3d38c3c7b0"),
        "key" : "value3",
        "key2" : "Val22",
        "key3" : "val33"
}
>