Mongoose:如何通过聚合框架将 $gte 和 $lte 用于数组

Posted

技术标签:

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

我有一个 mongoDB 对象,例如:


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

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

输出应该是这样的:


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

【问题讨论】:

【参考方案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] 
            ]
          
        
      
    
  
])

【讨论】:

以上是关于Mongoose:如何通过聚合框架将 $gte 和 $lte 用于数组的主要内容,如果未能解决你的问题,请参考以下文章

不能将 $match 与 mongoose 和聚合框架一起使用

mongoose 聚合 $avg $ 或返回空值

修改对象中的日期以在 mongoose 中进行聚合 $match 查询

$gte 和 $lte 在 Mongoose/MongoDB 中没有按预期工作

Mongoose - 如何聚合两个集合中的内容

Mongodb匹配聚合不适用于日期