Использование библиотеки Cloudant Query для простых вопросов (часть 7 из 10)
В предыдущих статьях мы рассмотрели добавление и извлечение документов из базы данных Cloudant по их ключевым полям - полю _id
. Есть большая вероятность, что вы хотите, чтобы ваша база данных могла делать больше, и здесь на помощь приходят запросы.
Сделать запрос
Cloudant Query позволяет задавать вопросы о ваших данных Cloudant, такие как:
- достаньте мне все документы, в которых поле
dob
меньше1970-01-01
- получите все документы, в которых поле
dob
меньше1970-01-01
, а полеactor
равноMarlon Brando
- получить первые пятьдесят фильмов с Мэтью Бродериком в главной роли в порядке дат
- получить следующие 50 фильмов, соответствующих предыдущему запросу
Запросы представлены в виде документов JSON, например:
Объект selector
является эквивалентом части запроса к реляционной базе данных WHERE. Он определяет значения или диапазоны полей, которые вы ищете. В этом случае оператор $lt
('меньше') используется для выполнения нашего первого запроса (доступны другие операторы).
Чтобы выполнить запрос, мы просто отправляем JSON в конечную точку /db/_find
:
Возвращенные данные будут иметь следующий вид:
docs
- массив совпадающих документовbookmark
открывает доступ к следующей странице матчейwarning
предупреждает нас, что мы выполняем запрос, который заставляет Cloudant сканировать всю базу данных для ответа. Мы можем улучшить производительность с помощью индекса, о котором мы поговорим позже.
Более сложные положения
Наш второй запрос должен использовать оператор $and
, которому передается массив предложений. Первое предложение такое же, как и наш первый запрос, и мы добавляем второе предложение для сопоставления по имени актера.
Только документы, соответствующие всем предложениям $and
, попадут в набор результатов.
Сортировка
Третий запрос добавляет к объекту запроса атрибут sort
:
Мы можем сортировать по одному или нескольким полям в порядке возрастания (asc) или убывания (убывание).
В следующий раз
В следующем посте мы сделаем все это снова, но программно на Node.js, и представим возможность выражения наших запросов на SQL.