【问题标题】:MongoDb/MongoVue Export part of a composite keyMongoDb/MongoVue 导出复合键的一部分
【发布时间】:2012-11-28 13:20:29
【问题描述】:

我想使用 MongoVue 为给定集合的一部分创建所有 id 的快速导出。

我有一个包含 _id 字段的文档,它是一个复合键。

例如。

{
  "_id" : {
    "GroupID" : 3,
    "ThingyID" : 320486
  },
  "HowManyOwned" : 42,
  "IsAwesome" : true
}

我想为第 3 组创建所有 ThingyID 的导出。

当然,如果我这样查询的话。

db.GroupThingy.find({ "_id.GroupID" : 3 }, { "_id.ThingyID" : 1 })

我会取回所有复合键。我想使用 MongoVue 快速创建此导出。如果我使用该查询,我会返回一个导出。

Document[2 Keys]
Document[2 Keys]
Document[2 Keys]

我希望得到的是

要么

3,12345
3,3838
3,3777
3,1111

或者更好的是

12345
3838
3777
1111

我可以为此编写一个程序,但必须有一种我不知道的快速方法来完成它。

聚合框架无法帮助我导出 csv 文件...但类似这样的内容仅支持 20k 文档

db.GroupThingy.group( 
{
    key: { 
            "_id.ThingyID": 1, 
            "_id.GroupID":1 
        }, 
    cond: { "_id.GroupID": 3 }, 
    reduce: function(curr, result){
            result.ThingyID2 = curr._id.ThingyID
        }, 
    initial: { "ThingyID2": 0 }
});

【问题讨论】:

  • 您是否考虑过为此使用聚合框架?你的收藏有多大?
  • 该集合有不到 700 万条记录。

标签: mongodb mongovue


【解决方案1】:

由于这个问题,我终于找到了如何使用 mongoexport 进行导出: how to export collection to csv in mongodb

但是我一直收到错误:

错误:位置选项太多...而这篇文章帮助我找到了答案: What does "too many positional options" mean when doing a mongoexport?

所以我运行 mongoexport 的最终解决方案是:

mongoexport 
     --host myHostName 
     --db theDB 
     --collection GroupThingy 
     --fields "_id.ThingyID" 
     --csv 
     --query "{'_id.GroupID':3}"

(为了便于阅读,上面有自己的选项)

【讨论】: