> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Як змусити Монго вставити ціле число?
Дякую
> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Як змусити Монго вставити ціле число?
Дякую
Відповіді:
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
Ви також можете використовувати NumberLong.
Трохи простіший синтаксис (як мінімум у Робомонго) працював у мене:
db.database.save({ Year : NumberInt(2015) });
Якщо тип значення вже подвійний, то оновлення значення за допомогою команди $ set не може змінити тип значення double на int при використанні функції NumberInt () або NumberLong (). Отже, щоб змінити тип значення, він повинен оновити весь запис.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
працював принаймні в Монго 4.2, тому, можливо, це була помилка.
Ну, це JavaScript, тому те, що ви маєте у "значенні" - це число, яке може бути цілим числом або плавкою. Але насправді різниці в JavaScript немає. From Learning JavaScript :
Тип даних про число
Типи даних про число в JavaScript - це числа з плаваючою комою, але вони можуть мати або не мати дробової складової. Якщо вони не мають десяткової крапки або дробової складової, вони розглядаються як цілі числа - базові-10 цілих чисел у діапазоні від –2 53 до 2 53 .