【问题标题】:How to convert MongoDb query into csv (excel format)如何将 MongoDb 查询转换为 csv(excel 格式)
【发布时间】:2018-08-23 20:18:44
【问题描述】:

这是我的查询。我想将此查询的输出导出为 csv(excel 格式),这样我就可以有一个数据表。我怎样才能做到这一点?我正在使用 Robo3t。

(db.getCollection('sentimentOpinions').aggregate([ 
  { $match : { objectType : "Security" } },

  { $lookup:{
             from: "securities",       
       localField: "objectId",  
     foreignField: "id",
               as: "StockID" }},

  { $unwind:"$StockID" },

  { $lookup:{
             from: "users", 
       localField: "userId", 
     foreignField: "userId",
               as: "USER_ARJ" }},

  { $unwind:"$USER_ARJ" },

  {$project :{USER_ID : "$userId",
                NAME : { $concat: [ "$USER_ARJ.profile.firstName",", ", 
                                 "$USER_ARJ.profile.lastName" ] }, 
          SECURITY_ID: "$StockID.id", 
             SECURITY: "$StockID.displayName", 
               TICKER: "$StockID.symbols.yahoo",
        OPINION_VALUE: "$value",
         OPINION_DATE: "$opinionDate"}}, 

         { $sort : { OPINION_DATE : -1 } } ]))

【问题讨论】:

    标签: mongodb export-to-csv robo3t


    【解决方案1】:

    首先,您需要使用此查询为您的数据设置正确的格式,并使用 $out 将输出保存为 new_col 的新集合

            (db.getCollection('sentimentOpinions').aggregate([ 
          { $match : { objectType : "Security" } },
    
          { $lookup:{
                     from: "securities",       
               localField: "objectId",  
             foreignField: "id",
                       as: "StockID" }},
    
          { $unwind:"$StockID" },
    
          { $lookup:{
                     from: "users", 
               localField: "userId", 
             foreignField: "userId",
                       as: "USER_ARJ" }},
    
          { $unwind:"$USER_ARJ" },
    
          {$project :{USER_ID : "$userId",
                        NAME : { $concat: [ "$USER_ARJ.profile.firstName",", ", 
                                         "$USER_ARJ.profile.lastName" ] }, 
                  SECURITY_ID: "$StockID.id", 
                     SECURITY: "$StockID.displayName", 
                       TICKER: "$StockID.symbols.yahoo",
                OPINION_VALUE: "$value",
                 OPINION_DATE: "$opinionDate"}}, 
    
                 { $sort : { OPINION_DATE : -1 } },
               {"$out" : "new_col"}
     ]))
    

    现在您可以使用mongoexport 以您想要的格式导出新集合

    mongoexport --db db_name --collection new_col_name(new_col) --type csv --fields USER_ID,NAME,SECURITY_ID,SECURITY,TICKER,OPINION_VALUE,OPINION_DATE --out out_file.csv
    

    【讨论】:

    • 如果您不想创建新集合并将查询的数据随时写入 csv 文件怎么办?因为它时不时会创建新的集合,而这在硬盘内存方面是不可行的。
    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2021-04-07
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 2018-03-11
    相关资源
    最近更新 更多