Команда 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);
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/has_fields/