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

MongoDB $toDate

В MongoDB, $toDate операторът за агрегиране преобразува стойност в дата

$toDate приема всеки валиден израз. Ако изразът не може да бъде преобразуван в дата, той връща грешка. Ако изразът е null или липсва, връща null .

Пример

Да предположим, че имаме колекция, наречена samples със следния документ:

{
	"_id" : ObjectId("60066f1cc8eb4369cf6ad9c9"),
	"double" : 1613372035500.75,
	"decimal" : NumberDecimal("1613372035500.75"),
	"long" : NumberLong("1613372035500"),
	"string" : "2021-02-15 06:53:55"
}

Можем да използваме следната заявка, за да върнем всяка от тези стойности като дата.

db.samples.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          "ObjectId": { $toDate: "$_id" },
          "double": { $toDate: "$double" },
          "decimal": { $toDate: "$decimal" },
          "long": { $toDate: "$long" },
          "string": { $toDate: "$string" }
        }
    }
  ]
).pretty()

Резултат:

{
	"ObjectId" : ISODate("2021-01-19T05:33:16Z"),
	"double" : ISODate("2021-02-15T06:53:55.500Z"),
	"decimal" : ISODate("2021-02-15T06:53:55.500Z"),
	"long" : ISODate("2021-02-15T06:53:55.500Z"),
	"string" : ISODate("2021-02-15T06:53:55Z")
}

Както се очаква, всички полета се връщат със съответните им стойности, преобразувани в стойности за дата.

Може да забележите, че полето ObjectId връща различна дата спрямо останалите. Това е така, защото _id стойността на полето отразява датата, на която е създаден документът, докато другите дати са само произволни дати, създадени от мен. Повече за ObjectId по-долу.

Входни типове

$toDate операторът приема следните типове въвеждане:

  • Двойно
  • Десетичен знак
  • Дълго
  • Низ (трябва да е валиден низ за дата)
  • ObjectId

Повече за тях по-долу.

Числови типове

Когато използвате числовите типове (двойно, десетично и дълго), $toDate връща дата, която съответства на броя милисекунди, представени от стойността. За Double и Decimal това е съкратената стойност. $toDate операторът интерпретира числови стойности, както следва:

  • Положителната стойност съответства на броя милисекунди от 1 януари 1970 г.
  • Отрицателна стойност съответства на броя милисекунди преди 1 януари 1970 г.

Типове низове

Когато използвате тип низ, низът трябва да бъде валиден низ за дата. Например:

  • "2021-02-15"
  • "15 February 2021"
  • "2021-02-15 06:53:55"
  • "2021-02-15 06:53:55+1100"

Не можете да използвате непълни дати или невалидни стойности като "Monday" , "March" , "2020" и др.

ObjectId

Стойностите на ObjectId са 12 байтови шестнадесетични стойности, които се състоят от:

  • 4 байтова стойност на времеви печат, представляваща създаването на ObjectId, измерена в секунди след епохата на Unix.
  • 5 байта е произволна стойност
  • Брояч с нарастващ 3 байта, инициализиран на произволна стойност.

$toDate операторът връща частта от времевия печат като дата.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 5 начина да проверите размера на колекция в MongoDB

  2. Как мога да споделям колекции на MongoDB между приложения на Meteor?

  3. Как да променя реда на масива с MongoDB?

  4. Mongodb -- включете или изключете определени елементи с c# драйвер

  5. MongoDB $isNumber