将 mongo 导入到 Azure Cosmos 模拟器时出现问题

Posted

技术标签:

【中文标题】将 mongo 导入到 Azure Cosmos 模拟器时出现问题【英文标题】:Issue doing mongo import to Azure Cosmos Emulator 【发布时间】:2019-02-22 16:05:36 【问题描述】:

我正在尝试将数据从 MongoDB 还原到 Azure Cosmos DB 模拟器,以测试我的应用程序。我最初使用数据导入工具,但在阅读文档后意识到这是用于 Cosmos DB 的 SQL API,而我想使用 MongoDB API。

我使用命令行成功地将我的数据从 Mongo 导出到 json 文件:

D:\MongoDb\bin>mongoexport.exe --db Vehicles --collection Cars --out C:\Temp\Cars.json
2018-09-18T10:02:21.210-0400    connected to: localhost
2018-09-18T10:02:21.212-0400    exported 100 records

然后我尝试使用以下命令将其导入 Azure Cosmos DB 模拟器

D:\MongoDb\bin> mongoimport.exe --host localhost:10255 -u admin -p C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw== --ssl --sslAllowInvalidCertificates --db Vehicles --collection Cars --type json --file "C:\Temp\Cars.json"

但是我收到以下错误:

2018-09-18T11:00:38.829-0400    Failed: error connecting to db server: Database Account admin does not exist
ActivityId: ada5953a-0000-0000-0000-000000000000, Microsoft.Azure.Documents.Common/1.22.0.0
2018-09-18T11:00:38.830-0400    imported 0 documents

我在 Azure Cosmos DB 模拟器中创建了一个名为 Vehicles with a Cars 集合的数据库,因此不确定我做错了什么 - 或者 Azure Cosmos 模拟器不能用于我正在尝试的事情吗?

我尝试在命令行脚本中将管理员更改为 Vehicles,但得到了同样的错误。

在 Azure Cosmos DB 模拟器中,这是我的 Mongo 连接字符串,我从中提取详细信息以进行导入

mongodb://localhost:C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==@localhost:10255/admin?ssl=true

理想情况下,我想让模拟器运行以在本地进行测试

【问题讨论】:

你试过用localhost作为用户名吗?我的意思是。在 mongiimport.exe 字符串中使用 -u localhost 而不是 -u admin 是的 - 我刚试过@localhost:10255/admin 不,没有端口。只是本地主机。像这样:D:\MongoDb\bin> mongoimport.exe --host localhost:10255 -u localhost -p C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw== --ssl --sslAllowInvalidCertificates --db Vehicles --collection Cars --type json --file "C:\Temp\Cars.json" @NickChapsas = 只是本地主机工作 - 干杯....再次:) :) 没问题 :) 我添加了答案。 【参考方案1】:

CosmosDB 模拟器中的 DatabaseAccount 名称是 localhost 而不是 admin,因此您的 mongoimport.exe 字符串应如下所示:

D:\MongoDb\bin> mongoimport.exe --host localhost:10255 -u localhost -p C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw== --ssl --sslAllowInvalidCertificates --db Vehicles --collection Cars --type json --file "C:\Temp\Cars.json"

【讨论】:

以上是关于将 mongo 导入到 Azure Cosmos 模拟器时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

数据从SQL Server迁移到Azure Cosmos数据库后无法查看数据

json 导入到cosmos

Azure 认知搜索和 Cosmos DB RU 消耗

Azure Cosmos DB:将集合克隆到另一个数据库

将Cosmos DB模拟器(MongoDB API)迁移到Azure时发生致命错误

Azure 函数:如何将 http 触发器函数的查询字符串参数绑定到 Cosmos DB 的 SQL 查询