我正在尝试将数字3.0
保存到期望加倍的模式中。不幸的是,Mongo似乎将其解释为整数,并且出现验证失败错误。
我的验证器如下:
avgRating: {
bsonType: 'double',
minimum: 1,
maximum: 5
},
我的查询如下:
await db.collection('products').updateOne(
{_id: productId},
{
$set: {
avgRating: 3.0
}
},
);
我已经检查了其他数字,例如3.00001
或4.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)
}
},
);