> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Làm cách nào để có được Mongo để chèn một số nguyên?
Cảm ơn bạn
> db.data.update({'name': 'zero'}, {'$set': {'value': 0}})
> db.data.findOne({'name': 'zero})
{'name': 'zero', 'value': 0.0}
Làm cách nào để có được Mongo để chèn một số nguyên?
Cảm ơn bạn
Câu trả lời:
db.data.update({'name': 'zero'}, {'$set': {'value': NumberInt(0)}})
Bạn cũng có thể sử dụng NumberLong.
Một cú pháp đơn giản hơn một chút (ít nhất là trong Robomongo) đã làm việc với tôi:
db.database.save({ Year : NumberInt(2015) });
Nếu loại giá trị đã tăng gấp đôi, thì cập nhật giá trị bằng lệnh $ set không thể thay đổi loại giá trị gấp đôi thành int khi sử dụng hàm NumberInt () hoặc NumberLong (). Vì vậy, để Thay đổi loại giá trị, nó phải cập nhật toàn bộ hồ sơ.
var re = db.data.find({"name": "zero"})
re['value']=NumberInt(0)
db.data.update({"name": "zero"}, re)
$set
đã làm việc ít nhất trong Mongo 4.2, vì vậy có lẽ đây là một lỗi.
Chà, đó là JavaScript, vì vậy những gì bạn có trong 'value' là một Số, có thể là số nguyên hoặc số float. Nhưng thực sự không có sự khác biệt trong JavaScript. Từ việc học JavaScript :
Kiểu dữ liệu số
Các kiểu dữ liệu số trong JavaScript là các số dấu phẩy động, nhưng chúng có thể có hoặc không có thành phần phân số. Nếu họ không có một dấu thập phân hoặc một thành phần phân đoạn, họ đang đối xử như số nguyên-base-10 số nguyên trong một loạt các -2 53 để 2 53 .