【问题标题】:How to mongoexport with one field如何使用一个字段进行 mongoexport
【发布时间】:2018-01-17 18:25:09
【问题描述】:

我在 mongoDB 的集合中有一些字段。 我已经尝试导出所有内容。 看起来像这样

{"_id":{"$oid":"5a5ef05dbe83813f55141a51"},"comments_data":{"id":"211","comments":{"paging":{"cursors":{"after":"WzZANVFV4TlRVME5qUXpPUT09","before":"WTI5dEF4TlRVNE1USTVNemczTXpZAMk56YzZANVFV4TlRBMU9ERTFNQT09"}},"data":[{"created_time":"2018-01-04T09:29:09+0000","message":"Super","from":{"name":"M Mun","id":"1112"},"id":"1111"},{"created_time":"2018-01-07T22:25:08+0000","message":"Happy bday..Godbless you...","from":{"name":"L1","id":"111"},"id":"1111"},{"created_time":"2018-01-10T00:22:00+0000","message":"Nelson ","from":{"name":"Boon C","id":"1111"},"id":"10111"},{"created_time":"2018-01-10T01:07:19+0000","message":"Thank to SingTel I like to","from":{"name":"Sarkar WI","id":"411653482605703"},"id":"10155812413346677_10155825869201677"}]}},"post_id":"28011986676_10155812413346677","post_message":"\"Usher in the New Year with deals and rewards that will surely perk you up, exclusively for Singtel customers. Find out more at singtel.com/rewards\"",

但现在我只想导出一个字段,即集合中“cmets_data”中的“消息”。

我试过用这个mongoexport --db sDB --collection sTest --fields data.comments_data --out test88.json

但是当我检查我导出的文件时,它只包含类似这样的内容

{"_id":{"$oid":"5a5ef05dbe83813f55141a51"}}

这是我没有预料到的。 我只想要"message":"Happy bday..Godbless you..."之类的东西 但是当我使用db.sTest.find({}, {comments_data:1, _id:0})在 mongoshell 查询时,我可以大致得到我想要的。

【问题讨论】:

    标签: mongodb mongoexport


    【解决方案1】:

    如果这...

    db.sTest.find({}, {'comments_data.message':1, _id:0})
    

    ... 选择您感兴趣的数据,那么等效的mongoexport 命令是:

    mongoexport --db sDB --collection sTest --fields 'comments_data.message' --type csv --out test88.csv
    

    注意:这里使用--type csv,因为根据the docs,使用 JSON 输出格式会导致 MongoDB 导出所选子文档中的所有字段...

    对于 csv 输出格式,mongoexport 仅包含指定字段,指定字段可以是子文档中的字段。

    对于 JSON 输出格式,mongoexport 仅包含指定字段和 _id 字段,如果指定字段是子文档中的字段,则 mongoexport 包含子文档及其所有字段,而不仅仅是文档中的指定字段。

    如果您必须使用 JSON 格式并将输出限制为单个字段,那么我认为您需要将缩减后的文档写入单独的集合并导出 那个 集合,按照this answer .

    【讨论】:

    • 导出的输出是什么?您的最后一条评论未包含修改后的导出输出示例 ....
    • 谢谢!但现在导出的输出有 _id、oid、cmets_data、cmets、before、data、message 字段。 '消息'前面有这么多字段。是否可以删除 _id 和 oid?
    • 数据库版本 v3.4.10
    • 抱歉,我现在已经更正了答案。如果您重新阅读答案,您会发现这是使用 JSON 输出格式的结果。如果您可以选择 CSV,那么这将正常工作。否则,您需要执行一些操作,例如将缩减文档写入单独的集合并以 JSON 格式导出该集合。
    • 嗨,我也试过导出为 csv 文件,它仍然有 _id。但没关系。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2011-11-27
    • 2011-06-12
    • 1970-01-01
    • 2021-11-15
    • 2012-08-17
    • 1970-01-01
    相关资源
    最近更新 更多