Couchbase Server 4.5 N1QL 按整数字段排序(PHP SDK)

Couchbase Server 4.5 N1QL order by integer field (PHP SDK)

我无法让 ORDER BY 在 Couchbase Server 4.5 中正常工作

文档

{ "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 价格字段是一个整数,以便正确完成订单。

假设文档在桶a中。然后下面的查询应该工作。

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