Spec-Zone.ru › RethinkDB python

Команда 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)

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

  • [] (get_field)
  • with_fields

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

Spec-Zone.ru

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