MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB $toLong

Z MongoDB 4.0 możesz użyć $toLong operator potoku agregacji do konwersji wartości na długą.

Większość typów można przekonwertować na długie, ale ObjectId nie.

Kiedy konwertujesz wartość Date na długą, $toLong zwraca liczbę milisekund od epoki, która odpowiada wartości daty.

Kiedy konwertujesz wartość logiczną na długą, jeśli wartość logiczna jest true , wtedy długość długa to 1 . Jeśli wartość logiczna to false , to długa jest 0 .

Przykład

Załóżmy, że mamy kolekcję o nazwie types i zawiera następujące dokumenty:

{
	"_id" : ObjectId("601340eac8eb4369cf6ad9db"),
	"double" : 123.75,
	"string" : "123",
	"boolean" : true,
	"date" : ISODate("2020-12-31T23:30:15.123Z"),
	"integer" : 123,
	"long" : NumberLong(123),
	"decimal" : NumberDecimal("123.75")
}

Możemy użyć $toLong operator do konwersji tych pól (z wyjątkiem _id pole) na długi. Jeśli dane wejściowe są już długie, to po prostu zwraca to długie.

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          double: { $toLong: "$double" },
          string: { $toLong: "$string" },
          boolean: { $toLong: "$boolean" },
          date: { $toLong: "$date" },
          integer: { $toLong: "$integer" },
          long: { $toLong: "$long" },
          decimal: { $toLong: "$decimal" }
        }
    }
  ]
).pretty()

Wynik:

{
	"double" : NumberLong(123),
	"string" : NumberLong(123),
	"boolean" : NumberLong(1),
	"date" : NumberLong("1609457415123"),
	"integer" : NumberLong(123),
	"long" : NumberLong(123),
	"decimal" : NumberLong(123)
}

Błędy

Jeśli napotkasz błędy, spróbuj użyć $convert operator zamiast $toLong . $convert operator umożliwia obsługę błędów bez wpływu na całą operację agregacji.

$toLong operator jest odpowiednikiem użycia $convert operator do konwersji wartości na długą.

Oto przykład użycia $convert aby spróbować przekonwertować ObjectId na long (co skutkuje błędem):

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: 0,
          result: 
          {
            $convert: { 
              input: "$_id", 
              to: "long",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Wynik:

{ "result" : "An error occurred" } 

Korzystanie z $convert pozwoliło nam określić komunikat o błędzie, który zostanie użyty, gdy wystąpi błąd, i nie zatrzymało całej operacji agregacji.

Zobacz MongoDB $convert więcej przykładów.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wykorzystanie buforowanych danych podczas sortowania przepełnienia przekracza wewnętrzny limit

  2. Wykorzystanie indeksu złożonego MongoDB

  3. Lombok - java.lang.StackOverflowError:null w metodzie toString

  4. Nie można uruchomić obrazu docker mongo w systemie Windows

  5. Jak używać $regex w zapytaniu agregującym mongodb w $match