2016-02-26 33 views
0

我無法獲得ORDER BY在Couchbase服務器正常工作4.5Couchbase Server 4.5中N1QL順序由整型字段(PHP SDK)

文件

{ "name": "Green", "price": "156" } 
{ "name": "Yellow", "price": "175" } 
{ "name": "Red", "price": "1" } 
{ "name": "Blue", "price": "18" } 

PHP

$cluster = new CouchbaseCluster('http://127.0.0.1:8091'); 
$bucket = $cluster->openBucket('products'); 
$bucket->enableN1ql(array('http://127.0.0.1:8093')); 
$query = CouchbaseN1qlQuery::fromString("SELECT * FROM products ORDER BY price ASC"); 
$results = $bucket->query($query); 

foreach ($results as &$r) { 
    $name = $r->products->name; 
    $price = $r->products->price; 
    echo "$name: $price <br>"; 
} 

輸出

Red: 1 
Green: 156 
Yellow: 175 
Blue: 18 

請你讓我知道我如何告訴Couchbase價格字段是一個整數,所以訂單將正確完成。

回答

1

假設文檔在桶中。然後下面的查詢應該工作。

select to_number(price) b from a order by b; 
{ 
    "requestID": "6642f123-08c1-4ec2-9380-c11c9fd05c60", 
    "signature": { 
    "b": "number" 
    }, 
    "results": [ 
     { 
      "b": 1 
     }, 
     { 
      "b": 18 
     }, 
     { 
      "b": 156 
     }, 
     { 
      "b": 175 
     } 
    ], 
    "status": "success", 
    "metrics": { 
     "elapsedTime": "9.39578ms", 
     "executionTime": "9.36118ms", 
     "resultCount": 4, 
     "resultSize": 125, 
     "sortCount": 4 
    } 
} 
+0

非常感謝你我會試試這個 – shingionline