在Apache CouchDB中按键搜索

时间:2010-05-27 16:45:09

标签: php couchdb nosql

是否可以在Apache CouchDB中按键值进行搜索?给出下面的样本数据(间隔可读性):

{
    "_id":"a754a63dcc7f319b02f7ce6de522ca26",
    "_rev":"1-5bd88e53fe0869b8ce274b49a2c1ddf5",
    "name":"john smith",
    "email":"jsmith@example.com",
    "username":"jsmith"
}

我可以查询用户jsmith或拥有电子邮件jsmith@example.com的用户的数据库吗?我该怎么做呢?

3 个答案:

答案 0 :(得分:6)

是的,这当然是可能的。您将创建几个视图,这些视图是数据的排序列表(“索引”),每个键一个。

Tobias的链接非常有用。但是,标准的CouchDB文档也将涵盖这一点:

例如,在您的设计文档中,您可能需要users_by_email视图,其中的键基于email字段;然后在users_by_name字段上键入username视图等。尝试使用Futon中的临时视图,直到您的功能正常工作,然后将其永久存储在设计文档中。

祝你好运!

P.S。有一种方法可以将所有这些要求合并到一个视图中。简而言之,您可以键入["email", "jsmith@example.com"]["name": "john smith"]然而请记住,CouchDB很放松:上面更简单的方法可以正常工作。当您对视图感到满意时,您可以探索这种“整理”的风格。

答案 1 :(得分:2)

答案 2 :(得分:2)

您无法按键值搜索。您只能按键搜索。

如果您要搜索电子邮件,请在某些视图中发出[电子邮件,无论数据]并添加?key='search email'以查看网址。

仅按键搜索会带来巨大的性能优势,因此[按键值搜索]此功能永远不会出现在couchDB中。