1

我开始同时研究 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

但是没有关于如何以及在哪里使用它们的解释。

你能帮忙吗?谢谢。

4

1 回答 1

1

您需要使用的函数order()接受两个常量之一:

  • ORDER_ASCENDING
  • ORDER_DESCENDING

在 php 中,所有常量都是公开可见的。要访问常量,可以使用以下代码:CouchbaseViewQuery::ORDER_ASCENDINGCouchbaseViewQuery::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"
}
于 2015-02-04T02:28:56.837 回答