Выбор, возвращающий максимальное, минимальное и среднее значение

Я новичок в RethinkDB, и мне нужно вернуть min , max и avg «value» путем группировки по «id», вот пример моего Json:

{
  "mycontent": [
    {
      "id": "000000000011",
      "value": "300"
    },
    {
      "id": "000000000012",
      "value": "500"
    },
    {
      "id": "000000000011",
      "value": "700"
    },
    {
      "id": "000000000013",
      "value": "200"
    },
    {
      "id": "000000000011",
      "value": "950"
    },
    {
      "id": "000000000012",
      "value": "150"
    }
  ]
}

Я нахожу некоторые проблемы с пониманием того, как это сделать, используя логику RethinkDB. Любая помощь ?


person BitFlow    schedule 12.05.2016    source источник


Ответы (1)


Вы можете использовать (), чтобы получить значение из mycontent и group по идентификатору. Одна из проблем заключается в том, что ваши данные представляют собой строку, поэтому вам нужно преобразовать их в число, чтобы avg работало.

что-то вроде этого:

r.expr({
  "mycontent": [
    {
      "id": "000000000011",
      "value": "300"
    },
    {
      "id": "000000000012",
      "value": "500"
    },
    {
      "id": "000000000011",
      "value": "700"
    },
    {
      "id": "000000000013",
      "value": "200"
    },
    {
      "id": "000000000011",
      "value": "950"
    },
    {
      "id": "000000000012",
      "value": "150"
    }
  ]
})('mycontent')
  .merge({value: r.row('value').coerceTo('number')})
  .group('id')
  .avg('value')
person kureikain    schedule 12.05.2016
comment
Спасибо, kureikain, но мне нужно получить AVG, Max и Min моих данных, я пробовал что-то вроде .group('id').avg('value').max(value).min(value), но я думаю я еще не понял, как это работает. - person BitFlow; 13.05.2016