Spec-Zone.ru › RethinkDB ruby

Команда ReQL: has_fields

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

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

Описание

Проверяет, содержит ли объект одно или несколько полей. Объект имеет поле, если у него есть соответствующий ключ и ключ имеет ненулевое значение. Например, объект {'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 { |row| row.has_fields(:games_won).not }.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/ruby/has_fields/

Spec-Zone.ru

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