MongoDB 关于MongoDB Shell的使用 (三)





 

mongodbshell命令 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文件夹。) 这将启动数据库服务器。






mongodbshell命令 mongodb shell_mongodbshell命令_02












    默认情况下,MongoDB会侦听本地主机接口端口27017的任何传入连接。



    现在数据库服务器已经启动,可以使用下面的命令向服务器发出命令 mongo shell。



    在您查看mongo shell之前,让我们简要了解一下如何使用导入/导出工具导入 在MongoDB数据库中导出数据。



    首先,创建一个CSV文件,以保存以下结构的学生的记录: 名字,性别,阶级,分数,年龄。








mongodbshell命令 mongodb shell_find命令_03




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




mongodbshell命令 mongodb shell_find命令_04



mongodbshell命令 mongodb shell_find命令_05






简而言之,你所做的是:




    1.连接到 Mongo Shell。




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




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




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




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





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



mongodbshell命令 mongodb shell_数据库_06



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




mongodbshell命令 mongodb shell_find命令_07






    1.1  Create and Insert



现在,您将了解如何创建数据库和集合。 如前所述,这些文档 MongoDB是JSON格式的。


首先,通过发出db命令,您将确认上下文是mydbpoc数据库。



> db


mydbpoc



现在,您将看到如何创建文档。


第一个文档符合第一个原型而第二个文档则符合 第二个原型。


您已经创建了两个名为user1和user2的文档。






mongodbshell命令 mongodb shell_mongodbshell命令_08



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



> db.users.insert(user1)


> db.users.insert(user2)



上面的操作不仅会将这两个文档插入到用户的集合中,而且还会创建 集合以及数据库。


同样可以使用show collection和show dbs进行验证 命令。



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




mongodbshell命令 mongodb shell_find命令_09





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




mongodbshell命令 mongodb shell_mongodbshell命令_10




与集合用户一起,系统。 索引集合也会显示出来。 这个系统。 索引收集是在创建数据库时默认创建的。 它管理着所有的信息 数据库中所有集合的索引。


执行命令db.users.find()将在用户集合中显示文档。




mongodbshell命令 mongodb shell_find命令_11




您可以看到您创建的两个文档被显示出来。 除了你添加到的字段之外 对于所有的文档,都会生成一个额外的id字段。 所有文档必须具有惟一的id字段。


如果您没有明确指定,那么将自动分配相同的值 作为MongoDB的唯一对象ID,如上例所示。 您没有显式地插入一个id字段,但是当您使用find()命令来显示文档时


可以看到与每个文档相关联的id字段。 这背后的原因是,默认情况下,索引是在id字段上创建的,可以通过发出该字段来验证 在系统上找到命令。 收集索引。




mongodbshell命令 mongodb shell_数据库_12



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


这个默认索引不能被删除。




    1.2  Explicitly Creating Collections



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




    1.3  Inserting Documents Using Loop



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




mongodbshell命令 mongodb shell_mongodbshell命令_13




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





mongodbshell命令 mongodb shell_mongodbshell命令_14



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




mongodbshell命令 mongodb shell_字段_15




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






mongodbshell命令 mongodb shell_字段_16





    1.4  Inserting by Explicitly Specifying _id




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




mongodbshell命令 mongodb shell_find命令_17





    1.5  Update




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




mongodbshell命令 mongodb shell_数据库_18




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






mongodbshell命令 mongodb shell_数据库_19



如果检查输出,就会看到只有第一个文档记录被更新,这是默认值 由于没有指定多个选项,所以更新的行为。


现在,让我们更改update命令,并包含多选项:




mongodbshell命令 mongodb shell_字段_20




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




mongodbshell命令 mongodb shell_数据库_21






正如您所看到的,这个国家被更新到英国,以满足所有符合条件的记录。


在实际应用程序中工作时,您可能会遇到可能出现的模式演化最后从文档中添加或删除字段。 我们来看看如何在这个过程中进行这些修改 MongoDB数据库。


update() 操作可以在文档级别使用,这有助于更新单个文件 在一个集合中文档或一组文档。


接下来,让我们看看如何向文档中添加新字段。 为了向文档中添加字段,使用 使用$set操作符和多选项的update()命令。


如果使用$set的字段名,这是不存在的,那么该字段将被添加到文档中。 下面的命令将把字段公司添加到所有文档:




mongodbshell命令 mongodb shell_数据库_22




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




mongodbshell命令 mongodb shell_mongodbshell命令_23




如果您使用文档中已有的字段执行update()命令,它将更新该字段 价值;但是,如果该字段没有出现在文档中,那么该字段将被添加到文档中。


接下来,您将看到如何使用$unset操作符使用相同的update()命令来删除字段 从文档。


以下命令将从所有文档中删除字段公司:





mongodbshell命令 mongodb shell_mongodbshell命令_24




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




mongodbshell命令 mongodb shell_数据库_25







    1.6  Delete




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




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




mongodbshell命令 mongodb shell_数据库_26




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




mongodbshell命令 mongodb shell_mongodbshell命令_27





没有返回的文档。


以下命令将删除所有文档:




mongodbshell命令 mongodb shell_find命令_28




如您所见,没有返回任何文档。


最后,如果您想要删除集合,下面的命令将删除集合:




mongodbshell命令 mongodb shell_mongodbshell命令_29




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



mongodbshell命令 mongodb shell_mongodbshell命令_30





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