> 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.
Немного более простой синтаксис (по крайней мере в Robomongo) работал для меня:
db.database.save({ Year : NumberInt(2015) });
Если тип значения уже double, то обновление значения с помощью команды $ set не может изменить тип значения double на int при использовании функции NumberInt () или NumberLong (). Итак, чтобы изменить тип значения, необходимо обновить всю запись.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
работал по крайней мере в Mongo 4.2, так что, возможно, это ошибка.
Ну, это JavaScript, так что в значении у вас есть число, которое может быть целым числом или числом с плавающей точкой. Но на самом деле нет никакой разницы в JavaScript. Из изучения JavaScript :
Тип данных Number
Числовые типы данных в JavaScript являются числами с плавающей запятой, но они могут иметь или не иметь дробный компонент. Если у них нет десятичной точки или дробного компонента, они рассматриваются как целые числа - целые числа с основанием 10 в диапазоне от –2 53 до 2 53 .