有时,我们可能想使用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",
}