首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从mongodb的聚合中获取有特定值的文档?

如何从mongodb的聚合中获取有特定值的文档?
EN

Stack Overflow用户
提问于 2019-06-21 16:18:54
回答 2查看 545关注 0票数 0

假设我有这样的文档:

文档1:

代码语言:javascript
运行
复制
_id:"1"
name:"Item 1"
quantity:1
min:3
alert:"Yes"

文档2:

代码语言:javascript
运行
复制
_id:"2"
name:"Item 2"
quantity:12
min:5
alert:"No"

如何只获取预警值为是的单据,不包括预警值为否的单据?

我从一些聚合中获得的那些文档:

代码语言:javascript
运行
复制
[
  {
    '$group': {
      '_id': '$id', 
      'name': {
        '$first': '$name'
      }, 
      'sum_quantity': {
        '$sum': '$quantity'
      }, 
      'alertMin': {
        '$first': '$alertMin'
      }
    }
  }, {
    '$project': {
      '_id': '$_id', 
      'name': '$name', 
      'quantity': '$sum_quantity', 
      'minimum': '$alertMin', 
      'alert': {
        '$cond': [
          {
            '$lte': [
              '$sum_quantity', '$alertMin'
            ]
          }, 'Yes', 'No'
        ]
      }
    }
  }
]

我期望得到以下结果:

代码语言:javascript
运行
复制
_id:"1"
name:"Item 1"
quantity:1
min:3
alert:"Yes"
EN

回答 2

Stack Overflow用户

发布于 2019-06-21 16:50:59

aggregation管道的末尾(或您希望匹配的任何位置)添加一个$match stage,它将为您提供所需的结果。

代码语言:javascript
运行
复制
{
    $match : {
        alert : "yes"
    }
}

阅读有关$match here的更多信息

票数 0
EN

Stack Overflow用户

发布于 2019-06-21 17:10:12

您可以使用单个流水线阶段$match来完成此任务。为此,您不需要使用任何其他阶段。

如下所示进行尝试:

代码语言:javascript
运行
复制
 db.collection.aggregate([
     {
        $match: {
            alert: "Yes"
        }       
     }
 ])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56699484

复制
相关文章

相似问题

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