2017-10-06 3 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

당신이 구체적인 예를 제공하고 설명 할 수 당신이 문서의 관련 부분 쿼리하려고합니까? – ptitzler

+0

제 질문을 편집했습니다 ... 충분하길 바래요. –

답변

0

난 당신이 할 수 있다고 생각하지 않습니다 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

+0

안녕하세요 ... 저는 클라우드 쿼리에서 변환을 시도하지 않았습니다. 나는 당신이 우리에게 준 desing Doc를 사용했지만 cloudant query precio : [13 TO 14]는 작동하지 않습니다. 감사합니다. –

+0

Cloudant Query가 아닌 Cloudant Search를 사용합니다. Cloudant Search를 사용하고 있습니까? https://console.bluemix.net/docs/services/Cloudant/api/search.html#search – markwatsonatx

관련 문제