在 Cloudant 查询中将字符串参数转换为浮点数

Convert a string parameter into float in Cloudant query

我需要在 Cloudant 数据库中进行查询,在该数据库中,您将一个定义为字符串的带小数的数字与从服务器发送的另一个数字进行比较。问题是对字符串进行了比较,我需要它是一个数字比较。有没有办法通过在查询时将数据库参数转换为 float 来执行此搜索? O 还有另一种方法可以执行此查询吗?

这是服务器端的查询,value.precio是客户端作为字符串发送过来的。

        value.precio = value.precio.split("-");
        var precio_init = value.precio[0];
        var precio_final = value.precio[1];  

        value.precio = {
          "$gte":precio_init,
          "$lte":precio_final
        };

在我的数据库中,这是我要搜索的参数:

"precio": "13.39"

谢谢

我认为您无法使用 Cloudant Query 执行此操作,但您可以尝试使用 Cloudant Search。创建类似于以下内容的新搜索索引:

设计文档:myDesignDoc

索引名称:byPrecio

索引:

function (doc) {
  if (doc.precio) {
    index("precio", parseFloat(doc.precio));
  }
}

然后就可以使用范围来搜索了。例如:

precio:[13 TO 14]

Cloudant 上的完整搜索如下所示:

https://xxx.cloudant.com/YOUR_DB/_design/myDesignDoc/_search/byPrecio?q=precio:[13%20TO%2014]&include_docs=true

响应示例:

{
  "total_rows":1,
  "bookmark":"g2wAAAAxxx",
  "rows":[
    {
      "id":"74fa6ff1b6dbca8c10d677832f6a3de2",
      "order":[
        1.0,
        0
      ],
      "fields":{

      },
      "doc":{
        "_id":"74fa6ff1b6dbca8c10d677832f6a3de2",
        "_rev":"2-17c984e51102b719fe9f80fc5d5bc78e",
        "precio":"13.39",
        "otherField":"otherValue"
      }
    }
  ]
}

More info on Cloudant Search here