2017-10-06 12 views
0

文字列として定義された小数点とサーバーから送信された別の数値を比較するCloudant DataBaseでクエリを実行する必要があります。問題は、文字列の比較が行われ、数値比較である必要があることです。クエリを実行しながらデータベースパラメータをfloatに変換することでこの検索を実行する方法はありますか? Oこのクエリを実行する別の方法がありますか?Cloudantクエリで文字列パラメータをfloatに変換する

これはサーバー内のクエリで、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"

おかげ

+0

あなたが具体的な例を提供し、説明することができCloudant上

precio:[13 TO 14] 

詳しい検索は次のようになります。あなたが書類の関連部分照会しようとしていますか? – ptitzler

+0

私の質問を編集しました...私はそれが十分であることを祈る –

答えて

0

私はあなたができるようになるとは思いませんCloudant Queryでこれを行うことはできますが、Cloudant Searchを試すこともできます。次のような新しい検索インデックスを作成します。

デザインドク:myDesignDocは

インデックス名:byPrecio

インデックス:

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

次にあなたが検索する範囲を使用することができます。たとえば:

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

+0

こんにちは...私は雲のクエリで変換をしようとしていません。私はあなたが私たちに与えたdesing Docを使用しましたが、曇りのクエリprecio:[13 TO 14]は動作していません。お返事ありがとうございました –

+0

これは、Cloudant検索ではなくCloudant検索を使用しています。 Cloudant Searchを使用していますか? https://console.bluemix.net/docs/services/Cloudant/api/search.html#search – markwatsonatx

関連する問題