À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