MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Заявката за дата с ISODate в mongodb изглежда не работи

Въпреки че $date е част от MongoDB Extended JSON и това е, което получавате по подразбиране с mongoexport Не мисля, че наистина можете да го използвате като част от заявката.

Ако опитайте точно търсене с $date като по-долу:

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

ще получите грешка:

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

Опитайте това:

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

или (след коментари от @user3805045):

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

ISODate може също да се изисква да се сравняват дати без време (отбелязано от @MattMolnar).

Според типовете данни в mongo Shell и двете трябва да са еквивалентни:

Черупката mongo предоставя различни методи за връщане на датата, или като низ, или като обект за дата:

  • Метод Date(), който връща текущата дата като низ.
  • нов конструктор Date(), който връща обект Date с помощта на обвивката ISODate().
  • ISODate() конструктор, който връща обект Date с помощта на обвивката ISODate().

и с помощта на ISODate все пак трябва да върне обект Date.

{"$date": "ISO-8601 string"} може да се използва, когато се изисква строго JSON представяне. Един възможен пример е Hadoop конектор.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да влезете в производството с MongoDB - Топ десет съвета

  2. Как мога да се свържа с MongoDB Atlas чрез Robomongo?

  3. Вземете списък с индекси в MongoDB

  4. MongoDB група по стойности в поле на масив

  5. MongoDB $count Оператор за агрегиране