从 Azure MongoDB 导出集合

3

我在Azure Cosmos DB中有一个MongoDB,其中包含1500个文档的集合,我想以JSON格式下载整个集合。我尝试了几种方法都没有成功,即:

test_collection.find({})

这导致了光标超时。使用

{ timeout : false }

没有帮助。然后我尝试使用mongoexport:

mongoexport -h host_name --port 1234 -u user_name -p password 
-d admin -c collection_name -o data.json --ssl

我尝试导出一个集合,但是结果显示导出了0条记录。防火墙IP访问控制已关闭,我可以通过Mongo shell连接到数据库。尝试导出其他集合也不起作用。此外,必须使用ssl,否则会立即出现“找不到数据库”的错误。

我考虑过使用skip和limit,但对于大型(且不断扩展的)集合来说似乎不是个好主意?请问有人能给我一些建议,告诉我如何最好地实现或克服这些障碍以下载我的集合吗?无论如何,我只需要简单地下载该集合。谢谢。

1个回答

4

您可能有一些错误的参数和缺少的参数:

  • 您确定您的数据库名称是admin吗?
  • 您需要指定--sslAllowInvalidCertificates
  • 对于主机/端口:应该看起来像这样:

    /h yourcosmosaccount.documents.azure.com:10255

如果您查看Cosmos DB设置中的“快速入门”选项卡,您将看到mongo(在示例中为mongo.exe)的命令行字符串。只需获取这些参数并将其用于mongoexport即可。

我刚刚对我的一个示例Cosmos DB(MongoDB API)数据库运行了这个命令,没有任何问题:

mongoexport image

以下是通用的命令行等效命令:

mongoexport /h <host:port> /u <username> /p <password> /ssl /sslAllowInvalidCertificates /d <database> /c <collection> /o <outputfile>.json

谢谢!-sslAllowInvalidCertificates 帮了大忙。 - Mozina
请问您能否在此处发布完整的查询语句? - Kitwradr
@Kitwradr - 这里没有查询。这个问题是关于使用 mongoexport 的,OP缺少参数。我解释了这一点。我展示了运行 mongoexport 所需的所有内容(这解决了OP的问题)。如果您有其他未涵盖的问题,请发布一个新问题。 - David Makogon
@Kitwradr,这是快速修复的方法: mongoexport /h <主机名:端口> /u <用户名> /p <密码> /d <数据库名> /c <集合名> /ssl /sslAllowInvalidCertificates /o <目录位置/数据.json> - monikapatelIT
@DavidMakogon,感谢您的解决方案,它确实有所帮助。但是,从您附加的图像中无法获取命令行语句,这就是为什么我添加了单独的答案以使其他人的生活更轻松的原因。 - monikapatelIT
1
@monikapatelIT - 啊,原来是关于发布格式化文本与图形图像的区别 - 这一点在2018年的评论中并不清楚。很容易解决:我刚刚编辑了我的原始答案,包括一个格式化文本版本。谢谢。 - David Makogon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接