首页 > 解决方案 > 如何将值设置为 Double 类型使用 updateOne 运算符?

问题描述

猫鼬模式:

const Double = require('@mongoosejs/double');

const Test = new mongoose.Schema({
  array: [{
    object: {
      value: Double
    }
  }]
});

更新查询:

Test.updateOne({ name: 'abc' }, {
  $set: {
    array: [{ value: 1000 }]
  }
})

实际:值为 Int32

期望:值为 Double

当我使用保存新数据时,它是双倍的。但是更新使用 $set,它是 Int32

标签: mongodbmongoose

解决方案


如果我们定义数组 like array:[value:{type:Double}],而像 mongoose 一样保存整数1 , 2 ...会覆盖数据类型并将数据类型保存为 int32 而不是预期的,因为很明显它的数据类型是 int 作为 double 处理浮点数。

如果您只想要一个值数组(而不是对象),那么您可以试试这个:

架构:

const Double = require("@mongoosejs/double");

const TestSchema = new mongoose.Schema({
  name: { type: String },
  array: [Double],
});

询问 :

let val = 5;
 await Test.updateOne(
    { name: "abc" },
    {
      $push: {
        array: val,
      },
    }
  );

结果 :

在此处输入图像描述


推荐阅读