在本文中,将介绍mongo shell的基本知识,以及如何使用它来管理MongoDB文档。为了使读者更容易地理解和实践概念,MongoDB
shell的引入被分成了三个部分。
一、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集合命令。 ![]() 正如您所看到的,集合名称没有显示,确认已经删除了集合从数据库中。在介绍了基本的创建、更新和删除操作之后,下一节将向您展示如何执行读操作。
|
|
来自: liang1234_ > 《MongoDB》