Spec-Zone.ru › RethinkDB python

Команда ReQL: ungroup

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

grouped_stream.ungroup() → array
grouped_data.ungroup() → array

Описание

Принимает сгруппированный поток или сгруппированные данные и преобразует их в массив объектов, представляющих группы. Любые команды, присоединенные после ungroup, будут работать с этим массивом, а не с каждой группой по отдельности. Это полезно, если, например, вы хотите отсортировать группы по значению их сводки.

Формат массива, возвращаемого ungroup, соответствует формату по умолчанию для сгруппированных данных в JavaScript-драйвере и обозревателе данных.

Предположим, что таблица games содержит следующие данные:

[
    {"id": 2, "player": "Bob", "points": 15, "type": "ranked"},
    {"id": 5, "player": "Alice", "points": 7, "type": "free"},
    {"id": 11, "player": "Bob", "points": 10, "type": "free"},
    {"id": 12, "player": "Alice", "points": 2, "type": "free"}
]

Пример: Какое максимальное количество очков набрал каждый игрок, причём самые результативные игроки в начале списка?

r.table('games')
   .group('player').max('points')['points']
   .ungroup().order_by(r.desc('reduction')).run(conn)

Результат:

[
    {
        "group": "Bob",
        "reduction": 15
    },
    {
        "group": "Alice",
        "reduction": 7
    }
]

Пример: Выбрать случайного игрока и все его игры.

r.table('games').group('player').ungroup().sample(1).run(conn)

Результат:

[
    {
        "group": "Bob",
        "reduction": [
            {"id": 2, "player": "Bob", "points": 15, "type": "ranked"},
            {"id": 11, "player": "Bob", "points": 10, "type": "free"}
        ]
    }
]

Обратите внимание, что если бы вы не вызвали ungroup, то вместо этого вы бы выбрали одну случайную игру от каждого игрока:

r.table('games').group('player').sample(1).run(conn)

Результат:

{
    "Alice": [
        {"id": 5, "player": "Alice", "points": 7, "type": "free"}
    ],
    "Bob": [
        {"id": 11, "player": "Bob", "points": 10, "type": "free"}
    ]
}

Пример: Нахождение арифметической моды массива значений:

r.expr([1,2,2,2,3,3]).group(r.row).count().ungroup().order_by('reduction').nth(-1)['group'].run(conn)

Результат:

2

Пример: Типы!

r.table('games').group('player').type_of().run(conn) # Returns "GROUPED_STREAM"
r.table('games').group('player').ungroup().type_of().run(conn) # Returns "ARRAY"
r.table('games').group('player').avg('points').run(conn) # Returns "GROUPED_DATA"
r.table('games').group('player').avg('points').ungroup().run(conn) #Returns "ARRAY"

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

  • group

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

Spec-Zone.ru

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