在没有视图的情况下迭代couchbase密钥

在没有视图的情况下迭代couchbase密钥,couchbase,Couchbase,在couchbase中,我想知道是否有一种方法—不使用视图—迭代数据库键。管理界面似乎可以做到这一点,但可能它做了一些特殊的事情。我想做的是像这样调用来检索一个密钥数组: $result=$cb->get(“KEY_ALBERT”、“KEY_FRED”); 结果是一个数组[KEY\u ALEX,KEY\u BOB,KEY\u DOGBERT] 同样,我不想使用视图,除非别无选择。看起来这是不可能的,但由于管理员中的“查看文档”似乎可以做到这一点,我想我应该仔细检查一下。如果有必要的话,我会使用p

在couchbase中,我想知道是否有一种方法—不使用视图—迭代数据库键。管理界面似乎可以做到这一点,但可能它做了一些特殊的事情。我想做的是像这样调用来检索一个密钥数组:

$result=$cb->get(“KEY_ALBERT”、“KEY_FRED”); 结果是一个数组[KEY\u ALEX,KEY\u BOB,KEY\u DOGBERT]


同样,我不想使用视图,除非别无选择。看起来这是不可能的,但由于管理员中的“查看文档”似乎可以做到这一点,我想我应该仔细检查一下。如果有必要的话,我会使用php接口。

我不知道couchbase admin是如何工作的,但有两个选项。第一个选项是将文档存储为链表,一个文档具有指向另一个文档的属性(键)

docs = [
  {
     id: "doc_C",
     data: "somedata",
     prev: "doc_B",
     next: "doc_D"
  },
  {
     id: "doc_D",
     data: "somedata",
     prev: "doc_C",
     next: "doc_E"
  }
]
第二种方法是使用顺序id。您应该有一个包含顺序的文档,并在每次添加时递增它。应该是这样的:

docs = [
  {
     id: "doc_1",
     data: "somedata"
  },
  {
     id: "doc_2",
     data: "somedata"
  }    
  ...
]
通过这种方式,您可以执行“范围请求”。要执行此操作,请在服务器端形成密钥数组:
[doc\u 1,doc\u 2….doc\u N]
并执行多重获取查询。这里也有一个

< P>根据你的评论,唯一的方法是创建一个简单的视图,它只发出ID作为键的标号:

function(doc, meta) {
  emit( meta.id );
}
使用此视图,您将能够使用所需的各种选项创建查询: -分页,范围


注意:当您谈到管理控制台时,控制台使用的“内部视图”与我在上面所写的类似(但没有优化)

couchbase PHP sdk确实支持multiget请求。对于键列表,它将返回一个文档数组

getMulti(数组$ids、数组$cas、int$标志):数组


谢谢,我知道这两种选择。不幸的是,这两个都不是我真正想要的。我想我主要是想澄清一下,我没有遗漏任何允许检索密钥范围的api。如果没有其他答案,我会接受你的答案,因为这是一个解决方案。。只是不是我想要的:)那么除了使用视图,我想没有其他选择了。我还认为,在管理界面中,他们只使用带有
skip
limit
的所有键的列表来显示这些文档。你也可以试着问下去。是的,我只是想确定我没有遗漏任何东西。我将接受这个答案,因为它似乎是唯一的答案。我会在couchbase论坛上发布这个问题,以防万一。我知道在不同的API中有一些不同。。。我希望这是他们出于某种原因没有包含在php api中的功能:)