首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在mongodb中列出值小于另一个字段10%的元素列表?

是否可以在mongodb中列出值小于另一个字段10%的元素列表?
EN

Stack Overflow用户
提问于 2020-07-30 05:47:07
回答 1查看 45关注 0票数 1

基本上,我有一个数据库,我记录摩托车和他们的里程。

代码语言:javascript
运行
复制
{
 "motorcycle":"A",
 "current_km":4600,
 "review_km":5000
},
{
 "motorcycle":"B",
 "current_km":4000,
 "review_km":5000
},
{
 "motorcycle":"C",
 "current_km":4900,
 "review_km":5000
},
{
 "motorcycle":"D",
  "current_km":3000,
  "review_km":5000
}

我有一个名为current_km的字段,它确定您当前的里程数,我还有一个名为review_km的字段,它包括指定应该在其中进行检查的里程数,只要您当前的里程数(current_km)大于里程审查(review_km)的10%。

因此,我想列举以下几个要素:

current_km大于:

(review_km -( review_km * 0.10))

例如:

代码语言:javascript
运行
复制
current_km = 4600;
review_km = 5000;
result = 5000 - (5000 * 0.10);
4600 (current_km)> = 4500 (result) // in this case it is showed

在我的数据库中,它将显示摩托车A和C的结果

我该怎么做呢?我不知道在mongodb中是否可以直接这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-30 06:06:16

需要在$subtract$multiply中使用聚合,

  • $addFields添加新字段,我们将生成result字段,使用$subtract生成方程(review_km - ( review_km * 0.10)),并在$expr中生成$multiply
  • $match方程,如果current_km >= result正确,则返回文档

代码语言:javascript
运行
复制
db.collection.aggregate([
  {
    $addFields: {
      result: {
        $subtract: [
          "$review_km",
          {
            $multiply: [
              "$review_km",
              0.10
            ]
          }
        ]
      }
    }
  },
  {
    $match: {
      $expr: {
        $gte: [
          "$current_km",
          "$result"
        ]
      }
    }
  }
])

工作游乐场:https://mongoplayground.net/p/s2qenvuzLKF

较短版本

如果您不希望响应result字段,则不再需要$match$addFields中的组合条件

代码语言:javascript
运行
复制
db.collection.aggregate([
  {
    $match: {
      $expr: {
        $gte: [
          "$current_km",
          {
            $subtract: [
              "$review_km",
              {
                $multiply: [
                  "$review_km",
                  0.10
                ]
              }
            ]
          }
        ]
      }
    }
  }
])

工作游乐场:https://mongoplayground.net/p/fii__3tTika

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63166913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档