В 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. Это гарантирует корректное хранение и обработку данных.