sql >> Databáze >  >> NoSQL >> MongoDB

Zdá se, že dotaz na datum s ISODate v mongodb nefunguje

Ačkoli $date je součástí MongoDB Extended JSON a to je to, co získáte jako výchozí s mongoexport Nemyslím si, že to opravdu můžete použít jako součást dotazu.

Pokud zkuste přesné vyhledávání pomocí $date jako níže:

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

zobrazí se chyba:

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

Zkuste toto:

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

nebo (po komentářích od @user3805045):

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

ISODate může být také požadováno porovnání dat bez času (poznamenal @MattMolnar).

Podle typů dat v mongo Shell by měly být oba ekvivalentní:

Shell mongo poskytuje různé metody pro vrácení data, buď jako řetězec nebo jako objekt Date:

  • Metoda Date(), která vrací aktuální datum jako řetězec.
  • nový konstruktor Date(), který vrací objekt Date pomocí obálky ISODate().
  • Konstruktor ISODate(), který vrací objekt Date pomocí obálky ISODate().

a pomocí ISODate by měl stále vracet objekt Date.

{"$date": "ISO-8601 string"} lze použít, když je vyžadována přísná reprezentace JSON. Jedním z možných příkladů je konektor Hadoop.



  1. K čemu slouží soubor mongo.lock?

  2. Ukládání hesel pomocí Node.js a MongoDB

  3. Lua skript a redis - jak testovat hodnotu None

  4. Rozdíl mezi poli id ​​a _id v MongoDB