【发布时间】:2020-05-20 02:44:05
【问题描述】:
我有这个聚合:
const dpi = (imgSize.height * imgSize.width) / (printDpi * printDpi);
let printSizes = await printSizeModel
.aggregate([
{
$project: {
id: 1,
width: 1,
height: 1,
price: 1,
shippingWidth: 1,
shippingHeight: 1,
shippingLength: 1,
shippingWeight: 1,
framePrice: 1,
hasFrame: 1,
total: { $multiply: ['$width', '$height'] },
},
},
{ $match: { total: { $lt: dpi } } },
])
.exec();
width和height都是数字,DPi也是数字(DPI是float,width和height是int)
我正在使用 mongoos 和 Nodejs。此聚合有时会返回正确的结果,有时会返回 null。根据我的理解,这应该是正确的,但我可能在这里遗漏了一些东西
【问题讨论】:
-
请提供输入(dpi)和示例文档!另外,如果它间歇性地工作,您是否要求它不工作的地方?
-
我测试并没有返回的其中一个是:476.91609977324265
-
不知道为什么,但你可能会遗漏一些东西,如果 total 总是一个数字,将 dpi 传递为
476.91609977324265应该可以。 -
总计始终是一个数字。我的一个疯狂猜测是,因为 476..... 是浮点数,它混淆了数据库并且它不返回任何东西。我将它转换为 int ,我正在观察是否可以解决问题。但是,如果您有任何其他可以帮助的建议,我将不胜感激。
-
哦,是的,这可能是问题:-)