如何在JavaScript中为MongoDb数据库获取isodate时间戳

时间:2013-09-07 04:13:44

标签: mongodb mapreduce mongoid

我正在使用mongoexport工具从集合中导出数据。我的收藏集的conn_time字段带有ISODate时间戳。我想导出最近15分钟内加载的数据。

我使用它如下,但它返回错误:"Too many positions."

-q '{conn_time:{$gt:"Fri' Sep 06 2013 22:23:20 GMT+0000 '(GMT)",$lt:"Fri' Sep 06 2013 22:38:20 GMT+0000 '(GMT)"}}'

完整的命令:

mongoexport --csv --out /tmp/aud_createcoll_log.csv 
--host abc.corp.ner:1089 
--db test --collection aud_create_log 
-q '{conn_time:{$gt:"Fri' Sep 06 2013 22:23:20 GMT+0000 '(GMT)",$lt:"Fri' Sep 06 2013 22:38:20 GMT+0000 '(GMT)"}}' 
--fields app_name,file_name,conn_time,conn_host,conn_command -u user -p 'aaaaaa' -v

1 个答案:

答案 0 :(得分:0)

虽然我无法准确测试您的命令行(因为我没有您的数据库),但我推测存在一些问题:

  1. 您的查询使用了不匹配的引号。你有一个开头的单引号('),然后在查询中多次使用单引号而不以任何方式转义它。因此,命令行解析器变得非常困惑和误解,命令行的其余部分是附加参数(事实上太多)。如果你想逃避单引号,你可以使用\',但正如你在下一个建议中所看到的那样,你不应该需要额外的引号。
  2. 我建议你在查询中使用ISODate,但是你需要确保它的格式正确。例如:ISODate("2013-09-07T20:03:38.739Z")。正如第一点所述,这样一来,你就不需要使用超过双引号来表达完整的日期。
  3. 命令看起来像这样(正如我所说,我还没有测试过):

     mongoexport --csv --out /tmp/aud_createcoll_log.csv 
     --host abc.corp.ner:1089 
     --db test --collection aud_create_log 
     -q '{conn_time:{$gt:ISODate("2013-09-06T22:23:20"),$lt:ISODate("2013-09-06T22:38:20")}}' 
     --fields app_name,file_name,conn_time,conn_host,conn_command -u user -p 'aaaaaa' -v