【问题标题】:How to order results from CouchbaseViewQuery on Couchbase PHP SDK 2.0?如何在 Couchbase PHP SDK 2.0 上从 CouchbaseViewQuery 订购结果?
【发布时间】:2015-04-01 19:45:05
【问题描述】:

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

但没有说明如何以及在何处使用它们。

你能帮忙吗?谢谢。

【问题讨论】:

    标签: php couchbase couchbase-view


    【解决方案1】:

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

    • ORDER_ASCENDING
    • ORDER_DESCENDING

    在 php 中,所有 class 常量都是公开可见的。要访问常量,可以使用以下代码:CouchbaseViewQuery::ORDER_ASCENDINGCouchbaseViewQuery::ORDER_DESCENDING

    以下是使用 Couchbase 服务器附带的 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"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多