Действительно ли возможно искать значением ключа в Apache CouchDB? Учитывая демонстрационные данные ниже (расположенный с интервалами для удобочитаемости):
{
"_id":"a754a63dcc7f319b02f7ce6de522ca26",
"_rev":"1-5bd88e53fe0869b8ce274b49a2c1ddf5",
"name":"john smith",
"email":"jsmith@example.com",
"username":"jsmith"
}
Я мог запросить базу данных для пользователя jsmith или для пользователя, имеющего электронную почту jsmith@example.com? Как я пошел бы об этом?
Да, это, конечно, возможно. Вы создадите пару представлений, которые представляют собой отсортированные списки ("индекс") ваших данных, по одному на ключ.
Ссылка Тобиаса полезна. Однако в стандартной документации CouchDB это тоже описано:
Например, в вашем проектном документе вам может понадобиться представление users_by_email
, ключи которого основаны на поле email
; затем представление users_by_name
с ключами на основе поля username
и т.д. Экспериментируйте с временными представлениями в Futon, пока не добьетесь правильной работы вашей функции, а затем сохраните ее в вашем проектном документе на постоянной основе.
Удачи!
P.S. Есть способ объединить все эти требования в одно представление. Вкратце, вы могли бы набрать ["email", "jsmith@example.com"]
или ["name": "john smith"]
, однако помните, что CouchDB расслаблен: более простой метод, описанный выше, будет работать отлично. Когда вы освоитесь с представлениями, вы можете изучить этот "сопоставленный" стиль.