如何使MongoDB将数字识别为双精度数?

时间:2019-03-30 21:30:50

标签: javascript node.js mongodb validation

我正在尝试将数字3.0保存到期望加倍的模式中。不幸的是,Mongo似乎将其解释为整数,并且出现验证失败错误。

我的验证器如下:

avgRating: {
  bsonType: 'double',
  minimum: 1,
  maximum: 5
},

我的查询如下:

await db.collection('products').updateOne(
    {_id: productId},
    {
      $set: {
        avgRating: 3.0
      }
    },
);

我已经检查了其他数字,例如3.000014.2,它们工作正常

2 个答案:

答案 0 :(得分:0)

尝试将验证器更改为以下内容:

avgRating: {
  bsonType: ["double"],
  minimum: 1,
  maximum: 5
},

我认为缺少[]会使MongoDB将其视为int或其他原因,导致这种行为。

答案 1 :(得分:0)

我想我错过了Node.js驱动程序中包含的Double类,导致该数字被正确对待:

const {Double} = require('mongodb');

await db.collection('products').updateOne(
  {_id: productId},
  {
    $set: {
      avgRating: Double(3.0)
    }
  },
);