MongoDB 关于MongoDB Shell的使用 (三)

MongoDB 关于MongoDB Shell的使用 (三)


 
    在本文中,将介绍mongo shell的基本知识,以及如何使用它来管理MongoDB文档。为了使读者更容易地理解和实践概念,MongoDB shell的引入被分成了三个部分。
  • 第一部分介绍了数据库的基本特性,包括基本的CRUD操作符。
  • 第二部分介绍高级查询。
  • 第三部分解释存储和检索数据的两种方式:嵌入和引用。

一、 MongoDB   Shell 的基本查询

    本部分将简要讨论CRUD操作(创建、读取、更新和删除)。 使用基本的 示例和练习,您将了解如何在MongoDB中执行这些操作。同时,了解如何在MongoDB中执行查询。
    与用于查询的传统SQL不同,MongoDB使用它自己的类似于json的查询从存储的数据中检索信息的语言。
    在成功安装MongoDB之后,正如在第5章中所解释的那样,您将导航到 目录 [C:\practicalmongodb\bin\]  这个文件夹拥有运行MongoDB的所有可执行文件。
    MongoDB shell可以通过执行mongo可执行文件来启动。
    第一步总是要启动数据库服务器。 打开命令提示符(将其运行为 管理员)并发出命令CD。
    接下来,运行命令C:实用的mongodb bin mongod. exe。 (如果安装在某些情况下 其他文件夹,路径会相应地改变。 对于本章中的例子,安装在 C:\practicalmongodb文件夹。) 这将启动数据库服务器。




    默认情况下,MongoDB会侦听本地主机接口端口27017的任何传入连接。
    现在数据库服务器已经启动,可以使用下面的命令向服务器发出命令 mongo shell。
    在您查看mongo shell之前,让我们简要了解一下如何使用导入/导出工具导入 在MongoDB数据库中导出数据。
    首先,创建一个CSV文件,以保存以下结构的学生的记录: 名字,性别,阶级,分数,年龄。



接下来,将MongoDB数据库中的数据导入到一个新的集合中,以便查看 导入工具。




简而言之,你所做的是:

    1.连接到 Mongo Shell。

    2.切换到你要用的数据库,例如admin。

    3.检查在admin数据库中存在的表,并show collections查看。

    4.核对你使用导入工具导入的表和数据。

    5.最后,之星find()命令来查看新表中的数据。


也可以使用help命令来查看相关指令。


在开始探索之前,让我们先简要介绍一下MongoDB术语和概念 对应于SQL术语和概念。 表6-1总结了这一点。




    1.1  Create and Insert

现在,您将了解如何创建数据库和集合。 如前所述,这些文档 MongoDB是JSON格式的。
首先,通过发出db命令,您将确认上下文是mydbpoc数据库。

> db
mydbpoc

现在,您将看到如何创建文档。
第一个文档符合第一个原型而第二个文档则符合 第二个原型。
您已经创建了两个名为user1和user2的文档。



接下来,您将按照以下顺序将这两个文档(user1和user2)添加到用户集合中 的操作:

> db.users.insert(user1)
> db.users.insert(user2)

上面的操作不仅会将这两个文档插入到用户的集合中,而且还会创建 集合以及数据库。
同样可以使用show collection和show dbs进行验证 命令。

如前所述,dbs将显示数据库的列表。



show collections 将在当前数据库中显示集合的列表。



与集合用户一起,系统。 索引集合也会显示出来。 这个系统。 索引收集是在创建数据库时默认创建的。 它管理着所有的信息 数据库中所有集合的索引。
执行命令db.users.find()将在用户集合中显示文档。



您可以看到您创建的两个文档被显示出来。 除了你添加到的字段之外 对于所有的文档,都会生成一个额外的id字段。 所有文档必须具有惟一的id字段。
如果您没有明确指定,那么将自动分配相同的值 作为MongoDB的唯一对象ID,如上例所示。 您没有显式地插入一个id字段,但是当您使用find()命令来显示文档时
可以看到与每个文档相关联的id字段。 这背后的原因是,默认情况下,索引是在id字段上创建的,可以通过发出该字段来验证 在系统上找到命令。 收集索引。


可以使用ensureIndex()和dropIndex()从集合中添加或删除新索引 命令。 我们将在本章后面讨论这个问题。 默认情况下,在所有id字段上创建一个索引 集合。
这个默认索引不能被删除。

    1.2  Explicitly Creating Collections

    在上面的例子中,第一个插入操作隐式地创建了集合。但是,用户也可以在执行insert语句之前显式地创建一个集合。

    1.3  Inserting Documents Using Loop

还可以使用for循环将文档添加到集合中。 下面的代码将插入用户使用的代码。



为了验证插入是否成功,可以在集合上运行find命令。



用户出现在集合中。 在您进一步了解之前,让我们先了解一下它的“类型” 声明。 find命令将一个光标返回到结果集,而不是显示所有的文档(可以是 成千上万的结果)在一个屏幕上,光标显示了前20个文档并等待 请求迭代(it)显示下一个20,直到所有结果集都显示出来。 所产生的光标也可以被分配给一个变量,然后通过编程方式对其进行迭代 使用while循环。 光标对象也可以作为数组进行操作。 在您的例子中,如果您输入“it”并按Enter键,下面将显示以下内容:



因为只剩下两个文档,所以它显示剩下的两个文档。





    1.4  Inserting by Explicitly Specifying _id

在前面的插入示例中,没有指定id字段,因此它是隐式添加的。 在接下来的 例如,您将看到如何在一个集合中插入文档时显式地指定id字段。 在显式地指定id字段时,您必须记住字段的惟一性; 否则 插入就会失败。



    1.5  Update

在本节中,您将探索update()命令,该命令用于更新集合中的文档。 update()方法在默认情况下更新一个文档。 如果你需要更新所有的文档 匹配选择条件,您可以通过将多个选项设置为true来实现。 让我们从更新现有列的值开始。 $set操作符将用于更新 的记录。 下面的命令更新了所有女性用户的英国:




要检查更新是否已经发生,请发出一个find命令来检查所有的女性用户。



如果检查输出,就会看到只有第一个文档记录被更新,这是默认值 由于没有指定多个选项,所以更新的行为。
现在,让我们更改update命令,并包含多选项:




再次发出find命令来检查这个国家是否已经为所有女性更新过 员工或不是。 发出find命令将返回以下输出:




正如您所看到的,这个国家被更新到英国,以满足所有符合条件的记录。
在实际应用程序中工作时,您可能会遇到可能出现的模式演化最后从文档中添加或删除字段。 我们来看看如何在这个过程中进行这些修改 MongoDB数据库。
update() 操作可以在文档级别使用,这有助于更新单个文件 在一个集合中文档或一组文档。
接下来,让我们看看如何向文档中添加新字段。 为了向文档中添加字段,使用 使用$set操作符和多选项的update()命令。
如果使用$set的字段名,这是不存在的,那么该字段将被添加到文档中。 下面的命令将把字段公司添加到所有文档:



对用户的集合发出find命令,您将发现添加到所有文档的新字段



如果您使用文档中已有的字段执行update()命令,它将更新该字段 价值;但是,如果该字段没有出现在文档中,那么该字段将被添加到文档中。
接下来,您将看到如何使用$unset操作符使用相同的update()命令来删除字段 从文档。
以下命令将从所有文档中删除字段公司:



可以通过向用户集合发出find()命令来检查这一点。 你可以看到公司字段已从文件中删除。




    1.6  Delete

要删除集合中的文档,请使用remove()方法。 如果你指定了一个选择条件 符合标准的文件将被删除。 如果没有指定任何标准,那么所有的文档 将被删除。

下面的命令将删除性别='M':



可以通过向用户发出find()命令来验证这一点:



没有返回的文档。
以下命令将删除所有文档:




如您所见,没有返回任何文档。
最后,如果您想要删除集合,下面的命令将删除集合:



为了验证是否删除了集合,发出show集合命令。



正如您所看到的,集合名称没有显示,确认已经删除了集合从数据库中。在介绍了基本的创建、更新和删除操作之后,下一节将向您展示如何执行读操作。


About Me:

    Github地址: https://github.com/noseparte  
    Email:     noseparte@aliyun.com         有java与hadoop相关的技术问题,可以发私信与我交流。
     NPM地址:     https://www.npmjs.com/~noseparte









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值