> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Jak zmusić Mongo do wstawienia liczby całkowitej?
Dziękuję Ci
> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Jak zmusić Mongo do wstawienia liczby całkowitej?
Dziękuję Ci
Odpowiedzi:
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
Możesz także użyć NumberLong.
Pracowała dla mnie nieco prostsza składnia (przynajmniej w Robomongo):
db.database.save({ Year : NumberInt(2015) });
Jeśli typ wartości jest już podwójny, zaktualizuj wartość za pomocą polecenia $ set, nie można zmienić typu wartości podwójnie na int, gdy używana jest funkcja NumberInt () lub NumberLong (). Aby zmienić typ wartości, należy zaktualizować cały rekord.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
działał przynajmniej w Mongo 4.2, więc może to był błąd.
Cóż, to JavaScript, więc to, co masz w „wartości”, jest liczbą, która może być liczbą całkowitą lub liczbą zmiennoprzecinkową. Ale tak naprawdę nie ma różnicy w JavaScript. Od nauki JavaScript :
Typ danych liczbowych
Typy danych liczbowych w JavaScript są liczbami zmiennoprzecinkowymi, ale mogą, ale nie muszą, składać się z ułamka. Jeśli nie mają one miejsca po przecinku lub części ułamkowej, są traktowane jako liczby całkowite - liczby całkowite podstawy-10 w zakresie od –2 53 do 2 53 .