MongoDB 简介 - 安装、Shell 和数据库管理
介绍
最近,我开始在一个企业项目中使用MongoDB,在此过程中我学到了很多东西。在本文中,我将介绍 MongoDB 以及如何开始使用它。在本系列指南结束时,您将了解直到基本 CRUD(创建、检索、更新、删除)操作的所有内容。
MongoDB 是一个NoSQL 数据库框架。NoSQL 数据库不同于 MySQL 或 postgreSQL 等传统关系数据库 (RDB)。RDB 具有特定的预定义模式、字段、约束、字段类型、触发器等。
对于典型的 NoSQL 数据库,没有上述情况。在构建数据库之前无需定义结构。这允许 MongoDB 数据库根据应用程序进行扩展或缩减,而传统的 RDB 则不易扩展。在大多数情况下,NoSQL 速度更快;因此,如果您需要存储或检索大量数据,NoSQL 是最佳选择。
NoSQL 数据库有多种类型,例如键值存储、文档数据库、宽列存储和图形数据库。MongoDB 是一种文档数据库,它使用 JSON(JavaScript 对象表示法)等语法将所有架构和记录存储在文档中。如果您熟悉 Web 开发,那么 MongoDB 会让您感觉很舒服。
安装
请参阅官方 MongoDB 指南来安装数据库基本知识。
安装 MongoDB 后,将bin目录添加到路径中。您需要注意两个二进制可执行文件。
- mongod——这是 MongoDB 服务器的守护进程(始终在后台作为服务运行的程序)。
 - mongo——这是 MongoDB 的命令行客户端 shell 界面。
 
注意: MongoDB服务器通常在端口27017上运行。
壳
通过从任何操作系统命令行终端界面执行mongo命令来启动 shell :
      C:\Users\Praveen> mongo⏎                  #     Windows
Praveen-MBP:~ Praveen$ mongo⏎             #   Macintosh
praveen@ubuntu:~$ mongo⏎                  #      Ubuntu
    
一旦进入此部分,您将看到一个黑屏,其中显示以下内容:
      praveen@ubuntu:~$ mongo
MongoDB shell version: 3.0.7
connecting to: test
Server has startup warnings:
[ some crazy error info messages ]
[ you don't need to worry about  ]
>
    
会出现一些奇怪的警告,但您不必担心。如果我们按Ctrl + L或在 shell 中输入cls并按Enter,所有消息都将被清除。您将只剩下MongoDB Shell:
      >
    
命令
显示所有数据库
要列出当前服务器中可用的所有数据库,我们需要使用命令show dbs。它显示一个默认的本地数据库,我们将把它放在一边而不去触碰它。
      > show dbs
local      0.000GB
>
    
创建数据库
要创建和使用新数据库,我们需要use命令。让我们创建一个名为praveen的新数据库:
      > use praveen
switched to db praveen
>
    
当我们使用use命令时,如果尚不存在数据库,它会创建一个新的数据库,并且切换到该数据库。
要检查我们当前所在的数据库,我们可以使用一个名为db的便捷命令。如有疑问,它将为我们提供我们当前所在的数据库。
      > db
praveen
>
    
文件
文档的语法类似于 JSON(JavaScript 对象表示法)。例如:
      {
  "field1": "value1",
  "field2": "value2",
    // --- and so on ---
  "fieldN": "valueN"
}
    
注意:有效的 JSON 不会有尾随逗号。查看最后一个值 - ValueN不以逗号结尾。
让我们考虑一个学生记录。典型的学生记录可能包含姓名、电子邮件和学位等基本详细信息:
      {
  "name": "Praveen Kumar",
  "degree": "Cloud Computing",
  "email": "praveen@example.com"
}
    
上面的数据集只是简单的字符串值。数组和对象也可以是数据库中的值。例如,我们的数据库可能有一个用于“科目”的字段,该字段以数组格式跟踪所有课程。在此示例中,每个班级或课程将是一个表示科目详细信息的对象。我们还可以将学生的电话号码保存为数组格式。每种用法如下所示:
      {
  "name": "Praveen Kumar",
  "degree": "Cloud Computing",
  "email": "praveen@example.com",
  "subjects": [
    {
      "name": "Internet Networks",
      "prof": "Prof. Awesome Blossom"
    },
    {
      "name": "Cloud Computing",
      "prof": "Prof. Tech Ninja"
    },
    {
      "name": "Web Development",
      "prof": "Prof. Chunky Monkey"
    }
  ],
  "phone": ["9840035007", "9967728336", "7772844242"]
}
    
数据库管理
用户管理
要开始使用我们刚刚创建的 MongoDB 数据库,我们需要创建一些用户。创建用户的函数是db.createUser()。有很多不同的方法可以做到这一点,但我们专注于最简单的方法:
      db.createUser({
  user: "praveen",
  pwd: "praveen",
  roles: ["readWrite", "dbAdmin"]
});
    
注意:这里的db变量表示当前活动数据库。
在 shell 上执行此操作将给你类似以下内容的成功输出:
      > db.createUser(
...   {
...     user: "praveen",
...     pwd: "praveen",
...     roles: [ "readWrite", "dbAdmin" ]
...   }
... )
Successfully added user: { "user" : "praveen", "roles" : [ "readWrite", "dbAdmin" ] }
>
    
现在我们有了用户,让我们继续添加一些数据!
内容管理
在传统数据库中,我们通常使用模式(或表),但 NoSQL 数据库没有这样的硬性规定。我们有集合而不是表。基本上,集合保存文档或记录。
创建集合
要创建集合,请使用db.createCollection()方法。它需要一个参数:集合的名称。要为学生创建集合,我们将使用:
      > db.createCollection("students");
{ "ok" : 1 }
>
    
成功消息将显示受影响项目(或在本例中为创建的集合)的数量。
列出收藏品
要列出此特定数据库中的所有集合,我们可以使用show collections。输出将类似于:
      > show collections
students
>
    
插入到集合中
插入集合类似于数组的推送函数。我们将使用db.collection.insert()函数。在我们的例子中,集合是students。因此,我们将使用:
      db.students.insert({
  name: "Praveen Kumar",
  degree: "Cloud Computing",
  email: "praveen@example.com",
  subjects: [
    {
      name: "Internet Networks",
      prof: "Prof. Awesome Blossom"
    },
    {
      name: "Cloud Computing",
      prof: "Prof. Tech Ninja"
    },
    {
      name: "Web Development",
      prof: "Prof. Chunky Monkey"
    }
  ],
  phone: ["9840035007", "9967728336", "7772844242"]
});
    
成功消息将类似于您在此处看到的内容:
      > db.students.insert({
...   "name": "Praveen Kumar",
...   "degree": "Cloud Computing",
...   "email": "praveen@example.com",
...   "subjects": [
...     {
...       "name": "Internet Networks",
...       "prof": "Prof. Awesome Blossom"
...     },
...     {
...       "name": "Cloud Computing",
...       "prof": "Prof. Tech Ninja"
...     },
...     {
...       "name": "Web Development",
...       "pr免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
                                
                                    
                                    
                                    
                                    
                                    
                                
                            
                                    
                                    
                                    
                                    
    
    
            
  
        
请先 登录后发表评论 ~