我负责构建一个 nodejs 模块,该模块将不同数量的数据从 mongodb 转储到文件中,然后将其放入 S3(有时是单个文档,有时是数千个,就像整个集合)。该模块所在的项目已经将“mongodb”驱动程序用于不同的用例。有人告诉我,对于较大的转储,使用mongoexport
在性能上可能比在 nodejs 中运行查询更好,但是这个解决方案意味着产生一个新进程并且取决于不同的工具(mongoexport),它肯定会增加解决方案的复杂性。我关心的不是速度方面的性能,而是数据库的开销。
mongoexport 是否会比简单地使用 fs 流查询和写入结果更快(并且“努力”更少)转储整个集合?
是否有指导方针或最佳实践来做这样的事情?
Mongoexport 使用 Go 驱动程序连接到 MongoDB 服务器。
它执行的任何操作也可以由任何其他用户执行。
如果没有提供过滤器,它会提示使用
{$natural:1}
它们在磁盘上出现的顺序读取文档,这比在读取整个集合时使用索引更有效。您应该能够通过设置
slowms
为 0 或通过增加查询组件的日志记录详细程度来发现任何特定运行的 mongoexport 使用的确切查询和选项。一旦您知道它对您的用例使用了哪些查询,您就可以将其与您可以对您的驱动程序执行的操作进行比较,以确定哪个更有效。