Поиск по ключу в Apache CouchDB - PullRequest
8 голосов
/ 27 мая 2010

Можно ли искать по значению ключа в Apache CouchDB? Приведенный ниже пример данных (разнесен для удобства чтения):

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

Могу ли я запросить в базе данных пользователя jsmith или пользователя, имеющего адрес электронной почты jsmith@example.com? Как бы я пошел по этому поводу?

Ответы [ 3 ]

6 голосов
/ 27 мая 2010

Да, это, конечно, возможно. Вы создадите пару представлений, представляющих собой отсортированные списки («индекс») ваших данных, по одному на ключ.

Полезна ссылка Тобиаса. Однако стандартная документация CouchDB будет охватывать это также:

Например, в вашем проектном документе вам может потребоваться представление users_by_email с ключами на основе поля email; затем users_by_name представление, введенное в поле username и т. д. Поэкспериментируйте с временными представлениями в Futon до тех пор, пока не получите правильную работу своей функции, а затем постоянно сохраняйте ее в своем проектном документе.

Удачи!

P.S. Есть способ объединить все эти требования в одно представление. Вкратце, вы можете набрать ["email", "jsmith@example.com"] или ["name": "john smith"], однако помните, что CouchDB расслаблен: более простой способ, описанный выше, будет работать нормально. Когда вы освоитесь с представлениями, вы сможете изучить этот «сопоставленный» стиль.

2 голосов
/ 30 декабря 2011

Вы не можете искать по значению ключа. Вы можете искать только по ключам.

Если вы хотите искать электронные письма, отправьте [email, любые данные] в каком-либо виде и добавьте ?key='search email' для просмотра URL.

Поиск только по ключам дает огромные преимущества в производительности, и поэтому эта функция [поиск по значению ключа] никогда не появится на couchDB.

2 голосов
/ 27 мая 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...