2017-10-06 5 views
0

Je dois faire une requête dans une base de données Cloudant où vous comparez un nombre avec des nombres décimaux qui est défini comme une chaîne avec un autre nombre envoyé par le serveur. Le problème est qu'une comparaison des chaînes est faite et j'en ai besoin pour être une comparaison numérique. Il n'y a aucun moyen d'effectuer cette recherche en convertissant le paramètre de base de données pour flotter tout en faisant la requête? O existe-t-il une autre façon de faire cette requête?Convertir un paramètre string en float dans la requête Cloudant

Il s'agit de la requête sur le serveur, valeur.precio est envoyée par le client sous forme de chaîne.

 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 
     }; 

Et dans ma base de données est ce paramètre que je veux rechercher est:

"precio": "13.39"

Merci

+0

Pouvez-vous fournir un exemple précis et décrire la partie pertinente des documents que vous essayons d'interroger? – ptitzler

+0

J'ai édité ma question ... J'espère que c'est assez Merci –

Répondre

0

Je ne pense pas que vous serez en mesure pour faire cela avec Cloudant Query, mais vous pouvez essayer Cloudant Search. Créer un nouvel index de recherche similaire à ce qui suit:

design Doc: myDesignDoc

Nom Index: byPrecio

Indice

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

Vous pouvez ensuite utilisations des intervalles pour rechercher. Par exemple:

precio:[13 TO 14] 

Recherche plein sur Cloudant ressemblerait à ceci:

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

Exemple de réponse:

{ 
    "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

Salut là-bas ... Je n'essaie pas de faire la transformation dans la requête cloudant. J'ai utilisé le fichier Doc que vous nous avez donné, mais la requête cloudant precio: [13 TO 14] ne fonctionne pas. Merci pour votre réponse –

+0

Cela utilise Cloudant Search pas Cloudant Query. Utilisez-vous Cloudant Search? https://console.bluemix.net/docs/services/Cloudant/api/search.html#search – markwatsonatx