请教一下:
mongoexport 命令在导出时候可以用-q 参数来过滤,比如:
-q '{request_time:{$gte:new Date(1334592000000)}}',
我想问的是如何把某时间戳的字段按 "%Y-%m-%d %H:%M:%S" 这种格式输出?
也就是想把导出的内容中的时间戳转为日期时间格式,并生成csv,这个-q参数如何写?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
有时,我们可能想使用mongoexport的查询参数导出集合的某一特定部分。
例如,一个notebook集合(collection),每个notebook文档(document)的文档都有一个生产日期属性。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
"_id" : ObjectId("531ce460000000019b9643bc"),
"company" : "Samsung",
"date" : ISODate("2014-03-09T22:00:00Z"),
"price" : 2000,
"brand" : "Ultrabook",
}
{
"_id" : ObjectId("531ce460000000019b9643ba"),
"company" : "Sony",
"date" : ISODate("2014-03-08T22:00:00Z"),
"price" : 1500,
"brand" : "Vaio",
}
{
"_id" : ObjectId("531ce460000000019b9643bd"),
"company" : "Apple",
"date" : ISODate("2014-03-07T22:00:00Z"),
"price" : 2250,
"brand" : "MacbookPro",
}
{
"_id" : ObjectId("531ce460000000019b9643be"),
"company" : "Apple",
"date" : ISODate("2014-03-06T22:00:00Z"),
"price" : 1200,
"brand" : "MacbookAir",
}
{
"_id" : ObjectId("531ce460000000019b9643bf"),
"company" : "Samsung",
"date" : ISODate("2014-03-05T22:00:00Z"),
"price" : 1000,
"brand" : "Ultrabook",
}
mongoexport的定义如下:
1
mongoexport --db --collection --query --out
主要的问题是在查询中不能使用ISODate("")对象作为时间的查询条件,必须转换成Date对象。
例如,我们要查找生产日期位于2014-03-09T22:00:00Z 和 2014-03-07T22:00:00Z之间的苹果公司的笔记本(notebook);
mongoexport
--db test --collection notebooks --query '{ company:"Apple", date: {
$lt: ISODate("2014-03-09T22:00:00Z") , $gte:
ISODate("2014-03-07T22:00:00Z")} }' --out example.
1
mongoexport --db test --collection notebooks --query '{ company:"Apple", date: { $lt: ISODate("2014-03-09T22:00:00Z") , $gte: ISODate("2014-03-07T22:00:00Z")} }' --out example.json
将得到以下错误:
ERROR
ERROR: too many positional options
有两种方法可以把ISODate对象转成Date对象,方法如下:
(1)使用mongo shell中的JavaScript脚本;
var a = ISODate('2014-03-10T22:00:00Z');
a.getTime()
1
2
var a = ISODate('2014-03-10T22:00:00Z');
a.getTime()
(2)把 ISODate数据转成毫秒,然后在转成Date对象;
ISODate("2014-03-10T22:00:00Z").valueOf()
现在可以使用正确的Date时间进行查询:
1
mongoexport --db test --collection notebooks --query "{ company:"Apple", date: { $lt: new Date(1394402400000) , $gte: new Date(1394229600000)} }" --out example.jso
最后会在当前文件夹下得到一个json文件,只包含一个文档记录;
{
"_id" : ObjectId("531ce460000000019b9643bd"),
"company" : "Apple",
"date" : ISODate("2014-03-07T22:00:00Z"),
"price" : 2250,
"brand" : "MacbookPro",
}
1
2
3
4
5
6
7
{
"_id" : ObjectId("531ce460000000019b9643bd"),
"company" : "Apple",
"date" : ISODate("2014-03-07T22:00:00Z"),
"price" : 2250,
"brand" : "MacbookPro",
}