Команда ReQL: has_fields
Синтаксис команды
sequence.has_fields([selector1, selector2...]) → stream array.has_fields([selector1, selector2...]) → array object.has_fields([selector1, selector2...]) → boolean
Описание
Проверка наличия одного или нескольких полей в объекте. Объект имеет поле, если у него есть соответствующий ключ и ключ имеет значение, отличное от null. Например, объект {'a': 1,'b': 2,'c': null} имеет поля a и b.
При применении к одному объекту, has_fields возвращает true если объект содержит эти поля и false если нет. При применении к последовательности, она вернёт новую последовательность (массив или поток), содержащую элементы, у которых есть указанные поля.
Пример: Получить игроков, которые выиграли игры.
r.table('players').has_fields('games_won').run(conn)
Пример: Получить игроков, которые не выиграли игры. Для этого используйте has_fields с not, заключённый в filter.
r.table('players').filter(~r.row.has_fields('games_won')).run(conn)
Пример: Проверить, выиграл ли конкретный игрок какие-либо игры.
r.table('players').get(
'b5ec9714-837e-400c-aa74-dbd35c9a7c4c').has_fields('games_won').run(conn)
Вложенные поля
has_fields позволяет проверять наличие вложенных полей в объектах. Если значение поля само по себе представляет набор пар ключ/значение, можно проверить наличие определённых ключей.
Пример: В таблице players поле games_won содержит одно или несколько полей, обозначающих типы выигранных игр:
{
'games_won': {
'playoffs': 2,
'championships': 1
}
}
Получить игроков, у которых есть поле «championships».
r.table('players').has_fields({'games_won': {'championships': True}}).run(conn)
Обратите внимание, что True в примере выше проверяет существование championships как поля, а не проверяет, установлено ли значение поля championships в true. Существует более удобная краткая форма. (См. pluck для получения дополнительной информации об этом.)
r.table('players').has_fields({'games_won': 'championships'}).run(conn)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/has_fields/