mongoexport 返回科学(指数)符号
mongoexport returning scientific (exponential) notation
所以我使用 mongoexport
导出一些集合,发现 9999999999999
等大整数被导出为 9.9999999999999e+13
的情况
所以有两个问题:为什么会这样,我该如何预防?
谢谢。
MongoDB 默认情况下将所有数字文字视为 floating point,超过某个阈值(32 位?)它在导出为 JSON.[=11 时切换为科学记数法=]
要转储数据,您可以使用 mongo
命令行客户端的 --eval
选项和 jq 命令。这不会以科学记数法给出数据。
例如
mongo --quiet localhost:5010/user --username alok --password alok --authenticationDatabase admin --eval 'db.users.find({}, {_id: 1, username:1, name: 1}).limit(10).toArray().map(JSON.stringify).join("\n")' | while read item; do echo $(echo $item | jq ._id),$(echo $item | jq .username),$(echo $item | jq .name); done > data.csv
所以我使用 mongoexport
导出一些集合,发现 9999999999999
等大整数被导出为 9.9999999999999e+13
所以有两个问题:为什么会这样,我该如何预防?
谢谢。
MongoDB 默认情况下将所有数字文字视为 floating point,超过某个阈值(32 位?)它在导出为 JSON.[=11 时切换为科学记数法=]
要转储数据,您可以使用 mongo
命令行客户端的 --eval
选项和 jq 命令。这不会以科学记数法给出数据。
例如
mongo --quiet localhost:5010/user --username alok --password alok --authenticationDatabase admin --eval 'db.users.find({}, {_id: 1, username:1, name: 1}).limit(10).toArray().map(JSON.stringify).join("\n")' | while read item; do echo $(echo $item | jq ._id),$(echo $item | jq .username),$(echo $item | jq .name); done > data.csv