> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Como faço para o Mongo inserir um número inteiro?
Obrigado
> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Como faço para o Mongo inserir um número inteiro?
Obrigado
Respostas:
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
Você também pode usar NumberLong.
Uma sintaxe um pouco mais simples (pelo menos em Robomongo) funcionou para mim:
db.database.save({ Year : NumberInt(2015) });
Se o tipo de valor já for duplo, atualize o valor com o comando $ set, não é possível alterar o tipo de valor double para int ao usar a função NumberInt () ou NumberLong (). Portanto, para alterar o tipo de valor, ele deve atualizar o registro inteiro.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
funcionou pelo menos no Mongo 4.2, então talvez isso tenha sido um bug.
Bem, é JavaScript, então o que você tem em 'value' é um Número, que pode ser um número inteiro ou um número flutuante. Mas não há realmente nenhuma diferença no JavaScript. De Aprendendo JavaScript :
O Número Tipo de Dados
Os tipos de dados numéricos no JavaScript são números de ponto flutuante, mas podem ou não ter um componente fracionário. Se eles não tiverem um ponto decimal ou componente fracionário, serão tratados como números inteiros - números inteiros da base 10 em um intervalo de –2 53 a 2 53 .