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