MongoDB 使用 MongoExport 将查询导出为 CSV

MongoDB Export Query to CSV using MongoExport

我真的需要帮助解决 mongoexport 的以下问题:

  1. 首先使用以下过滤器查询成功:

         db.payment_billers.find({
         createdDate : {
             $gte : ISODate("2022-04-01T00:00:00.000+07:00"),
             $lt : ISODate("2022-05-01T00:00:00.000+07:00")
          }
        })
    
  2. 然后我尝试使用这一行将结果导出到 csv:

     mongoexport --db=sigmob --collection=payment_billers
     --query='{createdDate : {$gte : ISODate("2022-04-01T00:00:00.000+07:00"),$lt : ISODate("2022-05-01T00:00:00.000+07:00")}}' --type=csv
     --fields=_id,accountSource.account.number,createdDate  --out=D:/download/220430/payment_billers.csv
    

结果:

2022-05-11T14:24:54.092+0700    error parsing command line options: error parsing positional arguments: provide only one MongoDB connection string. Connection strings must begin with mongodb:// or mongodb+srv:// schemes
2022-05-11T14:24:54.093+0700    try 'mongoexport --help' for more information

我在不使用查询的情况下尝试了脚本并且效果很好。真的需要帮助修改脚本,谢谢大家的帮助和关注。

当命令末尾有一些冗余文本时会出现此错误(mongoexport 将其视为 连接字符串 ,因此出现消息)。这可能是因为您的 shell 没有按照您期望的方式解释您的命令。

您使用什么类型的shell?看来你可以使用 Windows cmd,它不支持单引号。您应该为 --query 参数使用双引号,并在查询中使用 """ 转义双引号(阅读有关此转义规则 here 的更多信息):

--query="{"""createdDate""" : {"""$gte""" : ISODate("""2022-04-01T00:00:00.000+07:00"""),"""$lt""" : ISODate("""2022-05-01T00:00:00.000+07:00""")}}"

请注意,我还对字段名称 createdDate 和运算符 $gte$lt 使用了双引号,这在 mongoexport 中是强制性的(请参阅 docs ).

在您使用 Linux bash 时,您的命令应该在将字段名称和运算符括在简单的双引号中后正常工作。

--query='{"createdDate" : {"$gte" : ISODate("2022-04-01T00:00:00.000+07:00"),"$lt" : ISODate("2022-05-01T00:00:00.000+07:00")}}'