如何在没有“ numberLong”对象的情况下执行mongoexport

dou*_*ack 6 json export mongodb

我对数据库做了mongoexport转储:

$ mongoexport -d my_db -c articles

而且我看到我们的一些ID包裹在"$numberLong"对象中。不幸的是,这并不一致。有些filemakerIds只是简单的整数:

{"_id":{"$oid":"52126317036480948dc2abf2"},"filemakerId":4129,
Run Code Online (Sandbox Code Playgroud)

有些不是:

{"_id":{"$oid":"52126317036480948dc2abf1"},"filemakerId":{"$numberLong":"4073"},
Run Code Online (Sandbox Code Playgroud)

这些ID始终是3或4位数字。如果转储将它们始终显示为Int(例如"filemakerId":4129),对我来说会更容易。mongoexport可以强制这样做吗?

小智 0

mongoexport 工具的替代品可以是 MongoCompass,您可以在其中以 JSON 和 CSV 格式导出数据。

首先,转到聚合控制台并创建聚合管道。

$project部分将您的数据转换为 double 或 int。(我使用 double)

添加这个:

{$project:{"filemakerId":{$toDouble:"$filemakerId"}}}
Run Code Online (Sandbox Code Playgroud)

通过将数据转换为 double/int,您将不会获得“filemakerId”:{“$numberLong”:“4073”}。你会得到什么“filemakerId”:4073

最后,单击导出并选择输出格式,即 JSON/CSV。希望您能得到您预期的结果。