2016-08-24 2 views
0

Следующий документ существует в виде таблицы в RethinkDB:Сумма двух полей в вложенном массиве в RethinkDB

{ 
    u'destination_addresses':[ 
     u'1 Rockefeller Plaza, 
     New York, 
     NY 10020, 
     USA', 
     u'Meadowlands, 
     PA 15301, 
     USA' 
    ], 
    u'origin_addresses':[ 
     u'1600 Pennsylvania Ave SE, 
     Washington, 
     DC 20003, 
     USA' 
    ], 
    u'rows':[ 
     { 
     u'elements':[ 
      { 
       u'distance':{ 
        u'text':u'288 mi', 
        u'value':464087 
       }, 
       u'duration':{ 
        u'text':u'5 hours 2 mins', 
        u'value':18142 
       }, 
       u'status':u'OK' 
      }, 
      { 
       u'distance':{ 
        u'text':u'266 mi', 
        u'value':428756 
       }, 
       u'duration':{ 
        u'text':u'4 hours 6 mins', 
        u'value':14753 
       }, 
       u'status':u'OK' 
      } 
     ] 
     } 
    ], 
    u'status':u'OK' 
} 

Я пытаюсь подвести поле «значение» как для продолжительности и расстояния (так, получив в общей сложности расстояние и продолжительность для данной поездки, что является одним из этих документов из API Google Maps Distance). Я пробовал множество комбинаций pluck (из документации вложенных полей), но не может показаться, что это работает. Я работаю на Python и заранее за помощь.

ответ

0

Это делает то, что вы хотите?

document['rows'].concat_map(lambda row: row['elements'])['distance']['value'].sum() 
+0

Предполагается, что это должно быть для ReQL? Если это так, я не могу заставить его работать и не могу найти подобный фрагмент в документации. И, я достаточно хорош на Python, чтобы не знать об руку, если он должен быть отброшен там? – nacc

+0

Это код ReQL. Если вы замените 'document' каким-либо запросом ReQL, получившим ваш документ, то указанный выше запрос предназначен для суммирования расстояний. – mlucy

+0

Gotcha, работал как шарм. Мне пришлось добавить пару вещей, чтобы заставить его работать в интерпретаторе Python, поэтому для всех, кто на это смотрел, я закончил: «r.table (« рассказы »). Get ('689bc43c-c8c3-45df-b38b-e52043a0bab4 ') [' rows ']. concat_map (lambda row: row [' elements ']) [' distance '] [' value ']. sum(). run() 'thanks @mlucy! – nacc

 Смежные вопросы

  • Нет связанных вопросов^_^