Couchbase Server 4.5 N1QL порядок по целому полю (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, что поле цены является целым числом, поэтому заказ будет выполнен правильно.

0

Решение

Предположим, что документы находятся в ведре а. Тогда следующий запрос должен работать.

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector