我在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\"",
但现在我只想从集合中的'comments_data'中导出一个单独的字段''message'。
我尝试使用此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上查询时,我可以大致得到我想要的东西。
答案 0 :(得分: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格式并将输出限制为单个字段,那么我认为您需要将简化文档写入单独的集合并导出该集合,如{ {3}}