映射值后的订单/排序集合

时间:2017-04-01 12:58:37

标签: rethinkdb

我想按照使用.map()后获得的新值对结果进行排序。这怎么可管理?我没有运气就咨询了API。

在我的示例中,我将不同货币的价格存储在数据库中,但我希望在应用日常汇率后按价格订购。

这是我的ReQL查询:

r.table('price_variants')
  .orderBy({index: 'price'})
  .filter({'productID': product('id'), 'currentlyUsed': true})
  .limit(1)
  .map(function(variant) {
    variant = variant.merge({
      price: r.branch(
        variant
          .hasFields('exchange_type')
            .and(variant('exchange_type')
            .eq('EURUSD')),                       //IF EUR
        variant('price').mul(exchangeRateUSDEUR), //THEN convert to USD
        variant('price')),                        //ELSE just use original price
      ) 
    })
  })

提前致谢!

1 个答案:

答案 0 :(得分:0)

可以使用orderBy在地图之前或之后对结果进行排序。例如:

r.table('foo')
 .map(function(foo){
     return foo.merge({c: foo('a').add(foo('b'))});
 })
 .orderBy('c')

但是,您的具体示例有一些问题可能需要先解决。

  • 排序似乎毫无意义,因为它只有一个文档(因为.limit(1)
  • 您的映射函数不会返回任何内容。