Конечно!Один из моих любимых взглядов за его мощность - by_field
.Это довольно простая функция карты.
function(doc) {
// by_field: map function
// A single view for every field in every document!
var field, key;
for (field in doc) {
key = [field, doc[field]];
emit(key, 1);
}
}
Предположим, что у ваших документов есть поле .name
для их имени и .email
для их адреса электронной почты.
Чтобы получить пользователей по имени (например, "Алиса" и "Боб"):
GET /db/_design/example/_view/by_field?include_docs=true&key=["name","Alice"]
GET /db/_design/example/_view/by_field?include_docs=true&key=["name","Bob"]
Чтобы получить пользователей по электронной почте, с той же точки зрения:
GET /db/_design/example/_view/by_field?include_docs=true&key=["email","alice@gmail.com"]
GET /db/_design/example/_view/by_field?include_docs=true&key=["name","bob@gmail.com"]
Причина, по которой мне нравится выделять 1
, заключается в том,так что вы можете написать функции Reduce позже, чтобы использовать sum()
для простого добавления документов, соответствующих вашему запросу.