javascript - mongo如何导出一个对象数组为excel

 潮流时候男装 发布于 2022-11-14 19:50

最近在用mongodb,发现一个问题,mongodb好像不能直接把数据中的内嵌数组以excel的形式导出来,而mongoexport个人理解好像也只能直接把一些较为直接的数据导出来,想了很久也没有想到什么好的办法,Google也没有找到什么好的办法,只能向大家来求助了,谢谢大家了,内嵌数组形式如下:

items:[
    {"name":"矿泉水","price":"2","paid":1},
    {"name":"可乐","price":"3","paid":2},
    {"name":"百事","price":"3","paid":2}
]
3 个回答
  • 可以自己写代码,然后在代码里把从mongodb取出的数据解析生成到excel里。如果频繁需要取的话,可以自己用代码写个简单的工具。不同语言应该都会有操作excel的库

    2022-11-14 19:50 回答
  • 我是觉得没有的,只能转出txt,然后你自己想办法转

    2022-11-14 19:50 回答
  • 没理解错的话你所指的Excel应该是在说CSV?注意CSV其实是一种通用格式,旨在以一种简单的格式为不同的数据平台之间提供一个通用格式,Excel只是恰好可以打开它罢了。
    CSV是一种行列式的扁平结构的文件格式,MongoDB所支持的JSON是树状结构,只有在最特殊的情况下(即只有一层),才有可能表达为CSV的结构。另一方面,由于缺乏数据类型定义,转换成CSV后往往会丢失类型。比如一行数据

    张三,男,13800138000

    李四,女,18900189000

    系统会并不知道最后一列到底是数字还是字符串。
    综上,用CSV来表达MongoDB的文档其实并不是一个很好的选择。


    上面说了很多废话,下面说点实际的。要想把你提供的数据格式导出为CSV也不是不可能,但是会稍微复杂一些。仅仅看items是一个扁平的行列结构,但是对于系统来说,它处于文档的第二层,整个文档对系统来说还是一个树状结构,所以是无法直接转换成CSV的,需要经过一定的转换:

    db.test.aggregate([
        // 过滤条件(如果有)
        {$unwind: "$items"},
        {$project: {name: "$items.name", price: "$items.price", paid: "$items.paid", _id: 0}},
        {$out: "export"}
    ]);
    

    下面再使用mongoexport导出成csv就可以了:

    mongoexport -h 127.0.0.1 -d test -c export -f name,price,paid --type csv
    2022-11-14 19:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有