> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Come faccio a convincere Mongo a inserire un numero intero?
Grazie
> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Come faccio a convincere Mongo a inserire un numero intero?
Grazie
Risposte:
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
Puoi anche usare NumberLong.
Una sintassi leggermente più semplice (almeno in Robomongo) ha funzionato per me:
db.database.save({ Year : NumberInt(2015) });
Se il tipo di valore è già doppio, quindi aggiornare il valore con il comando $ set non è possibile modificare il tipo di valore doppio in int quando si utilizza la funzione NumberInt () o NumberLong (). Pertanto, per modificare il tipo di valore, è necessario aggiornare l'intero record.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
ha funzionato almeno in Mongo 4.2, quindi forse questo era un bug.
Bene, è JavaScript, quindi quello che hai in 'value' è un numero, che può essere un numero intero o un float. Ma non c'è davvero una differenza in JavaScript. Dall'apprendimento di JavaScript :
Il tipo di dati numerici
I tipi di dati numerici in JavaScript sono numeri in virgola mobile, ma possono avere o meno un componente frazionario. Se non hanno un punto decimale o un componente frazionario, vengono considerati come numeri interi — base-10 numeri interi compresi tra –2 53 e 2 53 .