MongoDB 简介 - 安装、Shell 和数据库管理

发布日期:2026-06-25 06:07:03   来源 : 杭州电子商务研究院    浏览量 :19
杭州电子商务研究院 发布日期:2026-06-25 06:07:03  
19

介绍

最近,我开始在一个企业项目中使用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
以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据