猿教程 Logo

.Net连接MongoDb:导入集合( mongoimport )

介绍

在上一篇文章中,我们开始在MongoDb中讨论查询。 具体来说,我们查看了find和findOne函数。 两者都可以接受一个JSON参数(一个JSON文档),以限制返回的结果集。 如果没有提供过滤器,find()返回与过滤器匹配的所有文档或返回所有文档。 即使有更多的匹配条件,findOne将始终返回单个文档。 如果您想通过查看其中一个文档来熟悉一个集合,findOne将非常有用。 我们也很快看了两个附加功能。 pretty()函数在屏幕上生成格式更好的JSON结果集,而count()函数返回集合中的文档数量。

在这篇文章中,我们将从查询中退一步,而不是考虑如何将数据导入MongoDb数据库。 具体来说,我们将创建两个现实生活中的收藏。 我们不想自己添加记录,这是非常乏味的。 至少有两种不同的即时可用和可导入的MongoDb集合。 目标是能够对现实的数据集进行有意义和现实的查询。

导入JSON集合

在本节中,我们将介绍一个名为mongoimport的工具,我们可以将保存在JSON文件中的JSON文档导入Mongo服务器。 有一个名为mongorestore的相关工具。 它执行类似mongoimport的类似数据导入任务,但它用于二进制BSON文件。 我们不会在这个帖子中进入蒙古商店,但是它的用法和mongoimport一样简单。 您可以在这里找到有关mongorestore的更多信息。

Mongoimport是一个“工具导入由mongoexport创建的扩展JSON,CSV或TSV导出的内容,或潜在的另一个第三方导出工具”。它与mongo.exe和mongod.exe在同一个bin文件夹中可用。

至少有两个可下载的记录集可以导入MongoDb中:

我们将模拟如何从先前导出的json文件还原数据库。

我们从餐馆收藏开始吧。 可以在此网页上查看json文件。 从浏览器复制JSON内容并将其保存在硬盘驱动器上的名为restaurants.json的文件中,您可以轻松找到它。 直接在你的主驱动器上,像C:\ restaurants.json。 餐厅数据集的完整文件路径将在一秒钟内重要。 我将其保存在我的用户文件夹中,即c:\ users \ andras.nemes \。

接下来打开两个命令提示符。 在其中一个启动mongod.exe。 在另一个中,首先使用“cd”导航到文件夹位置,在那里保存数据集。 然后从另一个命令提示符运行以下命令:

相关实例:

mongoimport --db model --collection restaurants --drop --file restaurants.json

上述命令将将餐馆数据集导入称为“model”的数据库,并将其称为“restaurants”。 如果存在“restaurants”集合将被丢弃,以便我们始终可以从头重新创建数据。 如果一切顺利,那么您将在命令提示符下看到以下输出:

[current date] connected to: localhost
[current date] dropping: model.restaurants
[current date] imported 25359 documents

真棒,我们继续邮政编码收集。 该过程与上述过程相同,让我们快速浏览。

  1. 从此链接复制JSON,并将其另存为zipcodes.json

  2. 从以下同一控制台运行以下mongoimport命令:mongoimport -db model -collection zipcodes -drop -file zipcodes.json

  3. 检查响应,应该说“imported 29353 documents”

让我们用到目前为止所学到的东西,并检查几件事情。

在执行mongoimport命令的命令提示符下,使用“mongo.exe”连接到服务器。 我们将首先查看可用的数据库:

show dbs

此命令至少应列出“本地”和“模型”,因此已创建模型数据库。 接下来,我们将切换到模型数据库,并询问它列出其集合:

use model
show collections

这应该导致两个集合显示:餐厅和邮政编码,正如预期。

收藏

我们来看看每个集合中的一个文档,以了解它们的外观:

db.restaurants.findOne()

这是一家餐厅:

相关实例:

{
        "_id" : ObjectId("56edc2ff03a1cd840734dba8"),
        "address" : {
                "building" : "2780",
                "coord" : [
                        -73.98241999999999,
                        40.579505
                ],
                "street" : "Stillwell Avenue",
                "zipcode" : "11224"
        },
        "borough" : "Brooklyn",
        "cuisine" : "American",
        "grades" : [
                {
                        "date" : ISODate("2014-06-10T00:00:00Z"),
                        "grade" : "A",
                        "score" : 5
                },
                {
                        "date" : ISODate("2013-06-05T00:00:00Z"),
                        "grade" : "A",
                        "score" : 7
                },
                {
                        "date" : ISODate("2012-04-13T00:00:00Z"),
                        "grade" : "A",
                        "score" : 12
                },
                {
                        "date" : ISODate("2011-10-12T00:00:00Z"),
                        "grade" : "A",
                        "score" : 12
                }
        ],
        "name" : "Riviera Caterer",
        "restaurant_id" : "40356018"
}

你可能会理解大多数属性。 我不知道什么是“grade”在grade数组中。 所有年级都有“A”等级,但成绩不一。

有几个新功能:

  • ISODate函数可以解析字符串日期并返回当前日期时间。 例如。 如果您在Mongo客户端输入“ISODate()”,然后按Enter键将以当前UTC日期(如ISODate(“2016-03-21T19:44:17.749Z”))进行响应

  • 餐厅同时拥有对象ID和数字餐厅ID。 我们回到了有关域对象的ID字段的讨论。 上述JSON演示了混合策略。 我们让MongoDb分配自己的对象ID,但是我们也提供自己的数字ID。 我们的客户端.NET(或Java,Python等)代码很可能会忽略对象ID,并且只能使用餐厅ID进行CRUD操作,即SELECT,UPDATE,INSERT和DELETE。 当我们讨论.NET MongoDb驱动程序时,我们将会看到一系列的例子

接下来我们将熟悉邮政编码集合:

db.zipcodes.findOne()

这是一个示例文档:

{
        "_id" : "01001",
        "city" : "AGAWAM",
        "loc" : [
                -72.622739,
                42.070206
        ],
        "pop" : 15338,
        "state" : "MA"
}

我将从相关的MongoDb文档中复制每个属性的说明:

  • _id字段将邮政编码保存为字符串。

  • 城市领域拥有城市名称。 一个城市可以有多个邮政编码相关联,因为城市的不同部分每个都可以有不同的邮政编码。

  • 状态字段保存两个字母的状态缩写。

  • 流行领域拥有人口。

  • loc字段将位置保存为纬度经度对。

好的,我们将使用这两个集合来获取即将到来的查询示例。

请阅读下一部分。


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