MongoDB $gt/$lt 运算符,价格存储为字符串

2024-02-02

我正在尝试查询数据库中大于/小于用户指定数字的价格。在我的数据库中,价格的存储方式如下:

{price: "300.00"}

根据文档,这应该有效:

db.products.find({price: {$gt:30.00}}).pretty()

但我没有得到返回的结果。我也尝试过{price: {$gt:30}}.

我在这里缺少什么?

是因为价格在数据库中存储为字符串而不是数字吗?有没有解决的办法?


如果您打算将 $gt 与字符串一起使用,则必须使用正则表达式,这在性能方面并不是很好。创建一个保存价格数值的新字段或将此字段类型更改为 int/double 会更容易。 javascript 版本也应该可以工作,如下所示:

db.products.find("this.price > 30.00")

as js 在使用前会将其转换为数字。但是,索引对此查询不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB $gt/$lt 运算符,价格存储为字符串 的相关文章

随机推荐