Spec-Zone.ru › RethinkDB java

Команда ReQL: hasFields

Синтаксис команды

sequence.hasFields([selector1, selector2...]) → stream
array.hasFields([selector1, selector2...]) → array
object.hasFields([selector1, selector2...]) → boolean

Описание

Проверка наличия одного или нескольких полей в объекте. Объект имеет поле, если у него есть соответствующий ключ и ключ имеет не-нулевое значение. Например, объект {'a': 1,'b': 2,'c': null} имеет поля a и b.

При применении к одному объекту, команда hasFields возвращает true, если у объекта есть данные поля, и false, если их нет. При применении к последовательности, она вернет новую последовательность (массив или поток) содержащую элементы, которые имеют указанные поля.

Пример: Получение игроков, которые выиграли игры.

r.table("players").hasFields("games_won").run(conn);

Пример: Получение игроков, которые не выиграли игры. Для этого используйте hasFields с not, обернутые в filter.

r.table("players").filter(
    row -> row.hasFields("games_won").not()
).run(conn);

Пример: Проверка, выиграл ли конкретный игрок какие-либо игры.

r.table("players").get("b5ec9714-837e-400c-aa74-dbd35c9a7c4c")
 .hasFields("games_won").run(conn);

Вложенные поля

hasFields позволяет проверять вложенные поля в объектах. Если значение поля само по себе представляет набор пар ключ/значение, вы можете проверить наличие определенных ключей.

Пример: В таблице players поле games_won содержит одно или несколько полей для видов выигранных игр:

{
    "games_won": {
        "playoffs": 2,
        "championships": 1
    }
}

Получение игроков, у которых есть поле «championships».

r.table("players")
 .hasFields(r.hashMap("games_won", r.hashMap("championships", true)))
 .run(conn);

Обратите внимание, что true в примере выше проверяет существование championships как поля, а не проверяет, установлено ли значение поля championships в true. Существует более удобная краткая форма. (См. pluck для получения более подробной информации об этом.)

r.table("players").hasFields(r.hashMap("games_won", "championships")).run(conn);

Связанные команды

  • getField
  • withFields

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/has_fields/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API