猿教程 Logo

MongoDb安装

介绍

在上一篇文章中,我们讨论了MongoDb的基本特征。 我们说这是一个NoSql数据库,它将数据存储在二进制JSON(即BSON文件)中。 这些文档包含有些类似于关系数据库中的表的集合。 理论上可以由JSON表示的任何数据结构都可以存储在BSON文档中。 没有数据库模式,没有约束,只要可以在JSON中表示,就可以将任何(非)结构化对象图存储在集合中。 MongoDb也具有很高的扩展性,查询性能也很好,特别是数据库调优的时候。 MongoDb还带有几个缺点,如缺少存储过程和事务。 在决定在项目中使用哪些数据存储技术之前,您需要对所有的proc和cons进行权衡。

在这篇文章中,我们将首先在本地机器上安装MongoDb可执行文件。 然后,我们将从MongoDb客户端看到与数据库服务器进行交互的几个基本示例。

安装

我们将在本地计算机上安装MongoDb。 MongoDb安装包可以从此链接下载:MongoDb下载页面


在写这篇文章的时候,稳定版本的版本是3.2.4。 当你阅读这篇文章时,你可能会看到更高的版本号。 我有一个64位Windows 10机器,所以我将使用版本下拉列表和“下载.msi”按钮下载Windows的64位版本。 请注意,MongoDb可以安装在32位计算机上,但这里会出现MongoDb安装指南页面的警告:

“32位版本的MongoDB仅适用于较旧的系统并用于测试和开发系统。 32位版本的MongoDB仅支持小于2GB的数据库。

所以点击下载按钮,它将下载将在Windows上安装MongoDb的.msi文件。 运行安装:

  • 接受许可条款,单击下一步

  • 选择完成安装选项

  • 确认MongoDb可以获得管理员权限,以将数据保存在Program Files文件夹中

  • 单击完成

就是这样,MongoDb现在安装在您的计算机上。

MongoDb默认安装在“Program Files”文件夹中。 该文件夹将具有与MongoDb相关的以下文件夹层次结构:

  • Server

  • 然后一个名为MongoDb版本的文件夹,在我的情况下为“3.2”

  • 然后将所有MongoDb数据库工具的bin文件夹以各种exe文件的形式,如mongo.exe

这个文件夹结构实际上没有任何魔法。 bin文件夹包含运行MongoDb客户端和服务器的所有工具。 任何地方都没有隐藏的依赖关系,它是一个自包含的文件集。 您可以复制bin文件夹,并将其放在另一个具有较简单路径的文件夹中,例如c:\ MongoDb \ bin。 我不会在这个系列中做到这一点,所以我们尽可能地遵守标准的选择,但我也想提到这个选项。

bin文件夹中最重要的两个可执行文件是mongo.exe和mongod.exe。 Mongod.exe启动数据库服务器,mongo.exe启动可以连接到服务器的客户端。 我们可以通过在这个文件夹中双击它们启动它们,但我们的目标是从命令行启动它们。 但是,总是导航到bin文件夹,然后在命令提示符下调用“mongo.exe”,这样我们就可以在Path环境变量中声明它的完整路径,这一点很繁琐。

我假设你知道什么环境变量。 找到“环境变量”窗口的方式取决于Windows的版本,但目标是进入以下屏幕:


选择路径变量,然后单击编辑。 Windows 10可以让我以比Windows的早期版本更加简洁的方式添加新的路径。 目标是一样的:在Path变量中添加MongoDb可执行文件的完整路径。 在我的情况下,它是“C:\ Program Files \ MongoDB \ Server \ 3.2 \ bin”:


在早期版本中,您需要将该文件夹路径添加到已经存在的路径末尾的路径中,该路径以分号“;”分隔。 单击确定按钮,直到与环境变量相关的所有窗口关闭。

打开命令提示符,键入“mongo”,然后按Enter键。 它将尝试连接到MongoDb服务器。 然而,我们会得到一个例外:


保持当前的命令提示符打开,并打开一个新的。 在新的类型中输入“mongod”,这次我们再收到一个例外:


它抱怨丢失的文件夹:c:\ data \ db。 如果您的主驱动器不是C:那么文件夹路径可能看起来不一样。 默认情况下,MongoDb会将BSON文档保存在Windows上的c:\ data \ db文件夹中。 继续在C上创建一个名为“数据”的文件夹,另一个数据文件夹中名为“db”的文件夹。

再次输入“mongod”命令,它应该成功,但不作例外:


它正在等待端口27017上的连接。您可能会收到Windows的警告,mongod已被防火墙阻止,但您可以安全地选择允许选项。

注意MongoDb是高度可定制的。 可以配置数据文件夹路径和一系列其他选项。 但是,这不是专门用于MongoDb数据库管理的课程,所以我尽量保留默认选项。

现在从客户端窗口尝试“mongo”命令。 你应该看到mongod回应“连接接受...”:


客户端将指示它已经设法连接到Mongo服务器。 更具体地说,它连接到默认数据库“test”:


这个客户端被称为MongoDb shell,它是与MongoDb服务器接口的默认方式。 如果您想直接从客户端与MongoDb服务器交互,请准备好大量JavaScript和JSON。 查询语言是JavaScript,提供给JS函数的参数通常是JSON格式的。

我们来试试客户端的几个命令。 让我们切换到“loadtest”数据库...

use loadtest

客户端将通过“switched to db loadtest”进行响应。

之前我们不需要创建数据库。 实际上,“use dbname”命令不会创建一个新的数据库,如果不存在提供的名称。 一旦我们在当前数据库的集合中输入新的记录,它将立即创建。 同样,我们也不需要预先创建收藏。

所以我们目前正在加载测试数据库。 我们为客户收集一个简单的对象:

db.customers.insert({“name”:“Nice people”,“status”:“active”,“address”:“California”})

上述命令将在当前数据库中创建一个名为“customers”的集合,即“loadtest”(如果不存在)。 我们还通过为insert函数提供JSON参数来插入一个新的JSON文档。 客户端将使用所谓的WriteResult进行响应:

WriteResult({“nInserted”:1})

稍后我们将看看写入结果。 上面的输出只是意味着插入对象的数量是1。

由于MongoDb集合是无模式的,因此我们可以自由地输入客户集合中的任何内容,例如:

db.customers.insert({“a”:“x”,“b”:“y”,“c”:“z”})

Mongod不会抱怨任何遗漏的“列”或任何违反的约束。

我们在集合中打印文档:

db.customers.find()

以下是输出:

{“_id”:ObjectId(“56e481e47cf412a2ee6bfc5b”),“name”:“Nice people”,“status”:“active”,“address”:“California” a“:”x“,”b“:”y“,”c“:”z“}

“_id”字段是新的。 每个文档都有一个名为“_id”的默认ID属性。 它是ObjectId类型,它是MongoDb内置的类型,看起来像GUID一样。 MongoDb会在每次输入没有id字段的文档时为您创建一个。 在您的情况下,ObjectId值绝对不同。

我们通过查找字段“a”的值为“x”的所有文档来限制搜索:

db.customers.find({“a”:“x”})

它会找到第二个文件。 如你所见,我们提供了JSON格式的过滤器到find函数。 如上所述,JSON参数在MongoDb中很普遍。

我们来摆脱这个错误的文件:

db.customers.remove({“a”:“x”})

shell将再次响应写入结果:

WriteResult({“nRemoved”:1})

我们列出当前数据库中的可用集合:

show collections

只有一个:customers。

最后,我们将检索数据库服务器上可用数据库的列表:

show dbs

以下是当前数据库及其大小:

loadtest 0.000GB
local 0.000GB

我们将在本系列中看到更多的命令和查询。 请阅读后面的部分。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CsharpMongo/2.html