用于node.js的mongoose的十进制/浮点数

时间:2011-04-09 14:14:15

标签: mongodb node.js mongoose

我在node.js / mongoDB / mongoose上启动了我的第一个测试应用程序,这是一个非常简单的应用程序,旨在创建数据库中的记录并检索它们。

我创建了一个类似的模型:

var Car = new Schema({
    brand : String,
    speed  : Number,
    date  :  { type: Date, default: Date.now }
});

这很好,除了我希望能够为速度而不是整数提供浮点值。我尝试了Decimal和Float,但没有一个正在工作。 我没有在文档中找到。

有什么想法吗?

4 个答案:

答案 0 :(得分:45)

我根本不熟悉mongoose和node.js,但我搜索了一下,发现存储浮点值必须使用Number类型。您可以在speed字段中存储任何浮点值。 Article

希望得到这个帮助。

答案 1 :(得分:0)

是的,您可以使用“ Decimal128”类型。

https://mongoosejs.com/docs/api.html#mongoose_Mongoose-Decimal128

答案 2 :(得分:0)

您可以创建自己的自定义标签。像这样

from imageai.Detection import ObjectDetection
import os
import time
exec_path=os.getcwd()
yolo_obj=ObjectDetection()
yolo_obj.setModelTypeAsYOLOv3()
yolo_obj.setModelPath(os.path.join(exec_path,"yolo.h5")
yolo_obj.loadModel()

来源是从@ mongoosejs / double

复制的

答案 3 :(得分:-2)

虽然mongoDB完全支持float类型,但是mongoose只支持Number为整数的类型。如果你尝试使用mongooses类型的数字保存到mongoDB浮点数,它将被转换为字符串。

要对此进行排序,您需要为mongoose加载一些插件,这将扩展其值类型。有些插件最适合使用货币或日期,但在您的情况下,我会使用https://www.npmjs.com/package/mongoose-double

更改后的模型看起来像这样:

var mongoose = require('mongoose')
require('mongoose-double')(mongoose);

var SchemaTypes = mongoose.Schema.Types;
var Car = new Schema({
    brand: { 
        type: String 
    },
    speed: {
        type: SchemaTypes.Double
    },
    date: {
        type: Date, 
        default: Date.now 
    }
});

希望它有所帮助。