微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在mongodb中执行分组,例如lodash chain和groupby

如何解决如何在mongodb中执行分组,例如lodash chain和groupby

我有一个lodash函数,该函数会如下分组并返回一个数组

  [{ key: '00001',amount: 135,request: [ false,false ] }]

我想检查请求是否包含某些值。我有可能执行此mongoDB聚合吗?到目前为止,我只能将数据分组为... 我正在使用猫鼬

  $group: {
        _id: "$key",name: { $first: "$request" },count: { $sum: 1 },totalValue: { $sum: "$amount" },},

示例文档


  [{ request: false,key: '00001',amount: 17,__v: 0 },{ request: false,_id: 5f536fb1b05c47f7d87acb8d,key: '00002',amount: 41,_id: 5f536fb1b05c47f7d87acb8e,amount: 29,_id: 5f536fb1b05c47f7d87acb8f,amount: 312,{ request: true,_id: 5f536fb1b05c47f7d87acb90,amount: 120,__v: 0 }]

谢谢!

解决方法

您可以尝试

  • $group在请求字段中推送请求
  • $match使用$anyElementTrue
  • 检查条件
db.collection.aggregate([
  {
    $group: {
      _id: "$key",request: { $push: "$request" },count: { $sum: 1 },amount: { $sum: "$amount" }
    }
  },{
    $match: {
      $expr: {
        $eq: [false,{ $anyElementTrue: "$request" }]
      }
    }
  }
])

Playground

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。