【问题标题】:Mongoose: How to use $gte and $lte into array with Aggregation frameworkMongoose:如何通过聚合框架将 $gte 和 $lte 用于数组
【发布时间】:2021-09-13 14:23:17
【问题描述】:

我有一个 mongoDB 对象,例如:

{
"Questions":[
  {
    "mark": 10
  },
  {
    "mark": 2
  },
  {
    "mark": 7
  }
 ]
}

我想返回大于 2 小于 8 的标记。

输出应该是这样的:

{
"Questions":[ 
  {
    "mark": 2
  },
  {
    "mark": 7
  }
 ]
}

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregation-framework aggregate


    【解决方案1】:

    演示 - https://mongoplayground.net/p/jFhksSRIFA4

    使用$filter 获取使用$gte$lte 过滤的数组

    db.collection.aggregate([
      {
        $project: {
          Questions: {
            $filter: {
              "input": "$Questions",
              "as": "q",
              "cond": {
                $and: [
                  { $gte: [ "$$q.mark", 2] },
                  { $lte: [ "$$q.mark", 8] }
                ]
              }
            }
          }
        }
      }
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      • 2019-06-27
      • 2017-04-24
      • 2011-07-11
      • 1970-01-01
      • 2018-09-28
      • 2021-07-12
      相关资源
      最近更新 更多