Embora
$date
faz parte do MongoDB Extended JSON e é isso que você obtém como padrão com mongoexport
Eu não acho que você pode realmente usá-lo como parte da consulta. Se tentar a pesquisa exata com
$date
como abaixo:db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})
você receberá erro:
error: { "$err" : "invalid operator: $date", "code" : 10068 }
Tente isto:
db.mycollection.find({
"dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})
ou (seguindo comentários de @user3805045):
db.mycollection.find({
"dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})
ISODate
também pode ser necessário comparar datas sem hora (observado por @MattMolnar). De acordo com os tipos de dados no Mongo Shell, ambos devem ser equivalentes:
O shell mongo fornece vários métodos para retornar a data, seja como uma string ou como um objeto Date:
- Date() método que retorna a data atual como uma string.
- novo construtor Date() que retorna um objeto Date usando o wrapper ISODate().
- Construtor ISODate() que retorna um objeto Date usando o wrapper ISODate().
e usando
ISODate
ainda deve retornar um objeto Date. {"$date": "ISO-8601 string"}
pode ser usado quando a representação JSON estrita é necessária. Um exemplo possível é o conector Hadoop.