sql >> Databasteknik >  >> NoSQL >> MongoDB

Datumfråga med ISODate i mongodb verkar inte fungera

Även om $date är en del av MongoDB Extended JSON och det är vad du får som standard med mongoexport Jag tror inte att du riktigt kan använda det som en del av frågan.

Om försök exakt söka med $date som nedan:

db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})

du får felmeddelande:

error: { "$err" : "invalid operator: $date", "code" : 10068 }

Prova detta:

db.mycollection.find({
    "dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})

eller (efter kommentarer av @user3805045):

db.mycollection.find({
    "dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})

ISODate kan också krävas för att jämföra datum utan tid (noterat av @MattMolnar).

Enligt datatyper i mongo Shell ska båda vara likvärdiga:

Mongoskalet tillhandahåller olika metoder för att returnera datumet, antingen som en sträng eller som ett Date-objekt:

  • Date()-metod som returnerar det aktuella datumet som en sträng.
  • ny Date()-konstruktor som returnerar ett Date-objekt med ISODate()-omslaget.
  • ISODate()-konstruktor som returnerar ett Date-objekt med ISODate()-omslaget.

och använda ISODate bör fortfarande returnera ett Date-objekt.

{"$date": "ISO-8601 string"} kan användas när strikt JSON-representation krävs. Ett möjligt exempel är Hadoop-kontakt.



  1. Konvertera BSON Type ObjectId till JSON (lagring i Mongodb) -Java

  2. 10 tips för att förbättra din MongoDB-säkerhet

  3. Hur man får flera listvärden i ett enda samtal i RedisTemplate av Jedis Client

  4. Vad är nästa steg för Impala efter release 1.1