MongoDB执行mongoexport时的异常及分析(数字类型的查询)

  


  

  

mongoexport命令行用于数据的导出,默认导出的文件格式为JSON格式。当然也可以指定特定的文件格式。

  

  
  

C: \ mongo \ bin> mongoexport -
  选择:
  ,——help ,,,,,,,,,,,,,,,,产生帮助信息
  ,- v (——verbose),,,,,,,更详细(包括多次
  ,,,,,,,,,,,,,,,,,,,,,,,,冗长例如-vvvvv)
  ,- h[——主机]arg ,,,,,蒙戈主机连接(& lt;设置name>/s1, s2组)
  ,——港口arg ,,,,,,,,,,,,服务器端口。还可以使用——主机主机名:端口
  ,——ipv6 ,,,,,,,,,,,,,,,,启用IPv6支持(默认情况下禁用)
  ,- u[——用户名]arg ,用户名
  ,- p[——密码]arg ,密码
  ,——dbpath arg ,,,,,,,,,,直接访问mongod在给定的数据库文件
  ,,,,,,,,,,,,,,,,,,,,,,,,路径,而不是连接到mongod 服务器-
  ,,,,,,,,,,,,,,,,,,,,,,,,需要锁数据目录,所以不能使用
  ,,,,,,,,,,,,,,,,,,,,,,,,如果mongod目前访问相同的路径
  ,——directoryperdb ,,,,,,如果dbpath指定,每个数据库都是在一个单独的
  ,,,,,,,,,,,,,,,,,,,,,,,,目录
  ,- d (- db) arg ,,,,,,,数据库使用
  ,- c[——集合]参数集合使用(一些命令)
  ,- f[——领域]arg ,,,逗号分隔的字段名称列表例如- f的名字,年龄
  ,——fieldFile arg ,,,,,,,文件字段名称- 1每行
  ,q[——查询]arg ,,,,查询筛选,作为一个JSON字符串
  ,——csv ,,,,,,,,,,,,,,,,,导出到csv代替json
  ,- o [,] arg ,,,,,,输出文件;如果不指定,stdout使用
  ,——jsonArray ,,,,,,,,,,,输出一个json数组而不是alt=" MongoDB执行mongoexport时的异常及分析(数字类型的查询)">

  

导出数据使用mongoexport命令,执行命令如下:

     /数据/mongodb mongobin344/bin/mongoexport x.x 172. - h。XXX——港口端口,db数据库- u账号- p的密码”——authenticationDatabase认证数据库- type=csv - c qqwj_order - f MsgContent, REC_CreateTime q’{“源”:NumberInt(“21”)、“批”:“支付中的订单提醒:2018/9/5”、“MsgContent”:/还未完成在线付款/}' - o/数据/mongodb_back sms.csv      

但是执行报错:

  
  

XXX并非有效的JSON: JSON:不能解组字符串类型的值json.NumberInt

     

错误截图如下:

  

 MongoDB执行mongoexport时的异常及分析(数字类型的查询)

  

  

因为报错信息中NumberInt关键字,此时去看我们的查询条件正好也有此关键字,所以推测是不是这个问题。

  

结果将导出命令中的<代码> NumberInt(21) 直接替换为21日再次执行。

  

执行命令为:

     /数据/mongodb mongobin344/bin/mongoexport x.x 172. - h。XXX——港口端口,db数据库- u账号- p的密码”——authenticationDatabase认证数据库- type=csv - c qqwj_order - f MsgContent, REC_CreateTime q’{“源”:21日“批”:“支付中的订单提醒:2018/9/5”、“MsgContent”:/还未完成在线付款/}' - o/数据/mongodb_back sms.csv      

执行结果为

  

 MongoDB执行mongoexport时的异常及分析(数字类型的查询)

  

结果表明修改后,数据成功导出。

  

  

为什么通过查询器查看,数据就是<代码>“源”:NumberInt(21)> “源”:NumberInt(21)> “源”:21

  

查询器查询出的源字段显示:

  

 MongoDB执行mongoexport时的异常及分析(数字类型的查询)

  

明明就是<代码>“源”:NumberInt(21)>   

回头看,找原理。我们知道目前MongoDB支持4中数据类型。

  
      <李>双李   <李> 32位整数   <李> 64位整数   <李>小数(新版本3.4)。   
  

在MongoDB客户端可以执行查询,但是在shell中无法执行导出,那么会不会和这两种工具有关?会不会和插入的NumberInt(数字)还是NumberInt(“数字”)有关?

  

  null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

MongoDB执行mongoexport时的异常及分析(数字类型的查询)