consulta mongoexport com uso de data

Às vezes, podemos querer exportar apenas uma parte específica de nossa coleção com suporte de consulta de mongoexport.
Suponha que esta seja nossa coleção de cadernos e cada documento se refira a um caderno com sua data de produção.

{
"_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",
}

A forma original de mongoexport é definida por

mongoexport --db <database> --collection <collection> --query <JSON query> --out <file>

O maior problema é que não podemos usar objetos ISODate () para representar datas em uma consulta, de modo que temos que converter cada um deles em um objeto Date .

Por exemplo; se tentarmos encontrar os notebooks produzidos entre 2014-03-09T22: 00: 00Z e 2014-03-07T22: 00: 00Z pela Apple com a consulta fornecida;

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

provavelmente teremos um erro como;

ERRO: muitas opções de posição

Existem duas maneiras comuns de converter ISODates em objetos Date que são;
* podemos usar um javascript simples no shell do mongo como;

var a = ISODate (‘2014-03-10T22: 00: 00Z’); a.getTime ()
* podemos converter a data fornecida em milissegundos a partir da data de cópia do link em milissegundos

Agora temos datas corretas para usá-las em nossa consulta.

mongoexport --db test --collection notebooks --query  "{ company:"Apple", date: { $lt: new Date(1394402400000) , $gte: new Date(1394229600000)} }" --out example.jso

Finalmente, teremos um arquivo json (example.json) em nosso diretório atual que inclui apenas um documento que é;

{
"_id" : ObjectId("531ce460000000019b9643bd"),
"company" : "Apple",
"date" : ISODate("2014-03-07T22:00:00Z"),
"price" : 2250,
"brand" : "MacbookPro",
}

Você pode chegar a este assunto do meu próprio blog pós