【问题标题】:How to formulate a mongoose query in which (Field A * Field B + Field C) < f?如何制定 (Field A * Field B + Field C) < f 的猫鼬查询?
【发布时间】:2020-08-28 00:07:41
【问题描述】:

我需要获取计算票价低于固定值的所有在线司机的列表。简而言之,制定猫鼬查询的最佳方法是:

(RATE * DISTANCE) + BASE_FARE

其中 RATE 和 BASE_FARE 是同一个查询的 Driver 模式中的字段,'max_fare' 是一个常数,而 DISTANCE 是从聚合管道中的前一个 $geoNear 阶段获得的字段?

【问题讨论】:

    标签: javascript node.js database mongodb mongoose


    【解决方案1】:

    好的。我估计。基本上我需要使用 $expr。我的最终聚合管道阶段如下所示:

    pipeline.push({
        $match:{$expr:{$and:[{$gte:[{$add:[{$multiply:["$ratePerKM",{$add:[{$divide:["$distance",1000]},query.maxKM.$gte]}]},"$baseFee"]},query.fareMin]},
                             {$lte:[{$add:[{$multiply:["$ratePerKM",{$add:[{$divide:["$distance",1000]},query.maxKM.$gte]}]},"$baseFee"]},query.fareMax]}]}}});
    

    过滤计算的票价,使其介于最小值和最大值之间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-30
      • 2018-12-31
      • 2021-09-29
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2016-03-05
      • 2022-12-01
      相关资源
      最近更新 更多