如何从 Couchbase PHP SDK 2.0 上的 CouchbaseViewQuery 订购结果?
How to order results from CouchbaseViewQuery on Couchbase PHP SDK 2.0?
我开始研究 Couchbase 和 MongoDB 以决定在社交网络上实施哪一个,但是 Couchbase 方面缺乏文档几乎让我放弃。
几乎所有我必须猜测的东西,因为文档很差,而且更容易混淆 PHP SDK 2.0 和以前的版本。有很多文档但是关于旧的 sdk 版本。
http://docs.couchbase.com/sdk-api/couchbase-php-client-2.0.2/index.html
现在我流完了,我的问题。
我有这段代码,并且创建了必要的视图:
$cb = CouchbaseViewQuery::from('dev_testimonials', 'by_uid')->key($uid)->limit($max)->skip($inicio);
它按预期工作,除了我需要按升序或降序对结果进行排序,但我找不到任何关于它的文档。我认为 ->descending(true) 应该可以解决问题,但不起作用。不存在。
API 参考文献中关于在 CouchbaseViewQuery 上进行排序的所有内容都是一个常量列表:
UPDATE_BEFORE, UPDATE_NONE, UPDATE_AFTER, ORDER_ASCENDING, ORDER_DESCENDING
但是没有解释如何以及在哪里使用它们。
你能帮忙吗?谢谢
您需要使用的函数是 order()
,它接受两个常量之一:
- ORDER_ASCENDING
- ORDER_DESCENDING
在 php 中,所有 class 常量都是公开可见的。要访问常量,可以使用以下代码:CouchbaseViewQuery::ORDER_ASCENDING
或 CouchbaseViewQuery::ORDER_DESCENDING
.
下面是使用 Couchbase Server 附带的 Beer-sample 数据的代码示例。
<?php
// Connect to Couchbase Server
$cluster = new CouchbaseCluster('http://127.0.0.1:8091');
$bucket = $cluster->openBucket('beer-sample');
$query = CouchbaseViewQuery::from('beer', 'by_location')->skip(6)->limit(2)->reduce(false)->order(CouchbaseViewQuery::ORDER_ASCENDING);
$results = $bucket->query($query);
foreach($results['rows'] as $row) {
var_dump($row['key']);
}
echo "Reversing the order\n";
$query = CouchbaseViewQuery::from('beer', 'by_location')->skip(6)->limit(2)->reduce(false)->order(CouchbaseViewQuery::ORDER_DESCENDING);
$results = $bucket->query($query);
foreach($results['rows'] as $row) {
var_dump($row['key']);
}
以上代码的输出如下:
array(3) {
[0]=>
string(9) "Australia"
[1]=>
string(15) "New South Wales"
[2]=>
string(6) "Sydney"
}
array(3) {
[0]=>
string(9) "Australia"
[1]=>
string(15) "New South Wales"
[2]=>
string(6) "Sydney"
}
Reversing the order
array(3) {
[0]=>
string(13) "United States"
[1]=>
string(7) "Wyoming"
[2]=>
string(8) "Cheyenne"
}
array(3) {
[0]=>
string(13) "United States"
[1]=>
string(7) "Wyoming"
[2]=>
string(6) "Casper"
}
我开始研究 Couchbase 和 MongoDB 以决定在社交网络上实施哪一个,但是 Couchbase 方面缺乏文档几乎让我放弃。
几乎所有我必须猜测的东西,因为文档很差,而且更容易混淆 PHP SDK 2.0 和以前的版本。有很多文档但是关于旧的 sdk 版本。
http://docs.couchbase.com/sdk-api/couchbase-php-client-2.0.2/index.html
现在我流完了,我的问题。
我有这段代码,并且创建了必要的视图:
$cb = CouchbaseViewQuery::from('dev_testimonials', 'by_uid')->key($uid)->limit($max)->skip($inicio);
它按预期工作,除了我需要按升序或降序对结果进行排序,但我找不到任何关于它的文档。我认为 ->descending(true) 应该可以解决问题,但不起作用。不存在。
API 参考文献中关于在 CouchbaseViewQuery 上进行排序的所有内容都是一个常量列表:
UPDATE_BEFORE, UPDATE_NONE, UPDATE_AFTER, ORDER_ASCENDING, ORDER_DESCENDING
但是没有解释如何以及在哪里使用它们。
你能帮忙吗?谢谢
您需要使用的函数是 order()
,它接受两个常量之一:
- ORDER_ASCENDING
- ORDER_DESCENDING
在 php 中,所有 class 常量都是公开可见的。要访问常量,可以使用以下代码:CouchbaseViewQuery::ORDER_ASCENDING
或 CouchbaseViewQuery::ORDER_DESCENDING
.
下面是使用 Couchbase Server 附带的 Beer-sample 数据的代码示例。
<?php
// Connect to Couchbase Server
$cluster = new CouchbaseCluster('http://127.0.0.1:8091');
$bucket = $cluster->openBucket('beer-sample');
$query = CouchbaseViewQuery::from('beer', 'by_location')->skip(6)->limit(2)->reduce(false)->order(CouchbaseViewQuery::ORDER_ASCENDING);
$results = $bucket->query($query);
foreach($results['rows'] as $row) {
var_dump($row['key']);
}
echo "Reversing the order\n";
$query = CouchbaseViewQuery::from('beer', 'by_location')->skip(6)->limit(2)->reduce(false)->order(CouchbaseViewQuery::ORDER_DESCENDING);
$results = $bucket->query($query);
foreach($results['rows'] as $row) {
var_dump($row['key']);
}
以上代码的输出如下:
array(3) {
[0]=>
string(9) "Australia"
[1]=>
string(15) "New South Wales"
[2]=>
string(6) "Sydney"
}
array(3) {
[0]=>
string(9) "Australia"
[1]=>
string(15) "New South Wales"
[2]=>
string(6) "Sydney"
}
Reversing the order
array(3) {
[0]=>
string(13) "United States"
[1]=>
string(7) "Wyoming"
[2]=>
string(8) "Cheyenne"
}
array(3) {
[0]=>
string(13) "United States"
[1]=>
string(7) "Wyoming"
[2]=>
string(6) "Casper"
}