【问题标题】:Convert a string parameter into float in Cloudant query在 Cloudant 查询中将字符串参数转换为浮点数
【发布时间】:2017-10-06 00:32:49
【问题描述】:

我需要在 Cloudant 数据库中进行查询,您可以在其中将一个数字与定义为字符串的小数与从服务器发送的另一个数字进行比较。问题是对字符串进行了比较,我需要它是一个数字比较。有没有办法通过在查询时将数据库参数转换为浮点数来执行此搜索? 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"

谢谢

【问题讨论】:

  • 您能否提供一个具体示例并描述您尝试查询的文档的相关部分?
  • 我编辑了我的问题...我希望它足够了谢谢

标签: node.js nosql ibm-cloud cloudant


【解决方案1】:

我认为您无法使用 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

【讨论】:

  • 您好...我不想在 cloudant 查询中进行转换。我使用了您给我们的设计文档,但 cloudant 查询 precio:[13 TO 14] 不起作用。感谢您的回复
  • 这使用 Cloudant Search 而不是 Cloudant Query。您在使用 Cloudant 搜索吗? console.bluemix.net/docs/services/Cloudant/api/…
猜你喜欢
  • 2011-11-25
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
相关资源
最近更新 更多