MongoDB: Хранение чисел (int, long, double)

В JSON существует только один числовой тип. В MongoDB ситуация сложнее: имеются 32-битные целые числа (int), 64-битные целые числа (long) и числа с плавающей точкой (double). По умолчанию MongoDB хранит числа как double.

Указание типа числа

Для хранения числа в MongoDB как 32-битное или 64-битное целое число необходимо явно указать его тип. Это делается с помощью префиксов NumberInt и NumberLong соответственно в синтаксисе оболочки MongoDB.

Примеры

  • 10: Хранится как 10.0 (double).
  • 0: Хранится как 0.0 (double).
  • 5.75: Хранится как 5.75 (double).
  • NumberInt(10): Хранится как 10 (32-битное целое число).
  • NumberLong(123): Хранится как 123 (64-битное целое число).

Без указания типа целые числа преобразуются в числа с плавающей точкой.

Практический пример в MongoDB Shell

Создадим объект в MongoDB Shell:

obj = {
  a: 10,
  b: 0,
  c: 5.75,
  d: NumberInt(10),
  e: NumberLong(123)
}

Результат:

  • a (10) хранится как 10.0 (double).
  • b (0) хранится как 0.0 (double).
  • c (5.75) хранится как 5.75 (double).
  • d (NumberInt(10)) хранится как 10 (32-битное целое число).
  • e (NumberLong(123)) хранится как 123 (64-битное целое число).

Проверка типов в представлении дерева документа подтверждает это.

Резюме

Для хранения целых чисел в документах MongoDB всегда указывайте тип с помощью префиксов NumberInt или NumberLong. Это гарантирует корректное хранение и обработку данных.

Что будем искать? Например,программа