首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb聚合函数并根据条件返回结果。

mongodb聚合函数并根据条件返回结果。
EN

Stack Overflow用户
提问于 2021-01-15 10:58:51
回答 1查看 192关注 0票数 0

我有两张桌子--小贩和供应商。我的条件如下:1.供应商表vendorOrgId ===供应商表_id 2.如果上述条件通过供应商表类别满足供应商组,则供应商表中的状态===“活动”。是有可能的

供应商表

代码语言:javascript
复制
const vendors = [{
  "name" : "Alfred",
  "location" : "FH",
  "vendorOrgId" : "1"
},
{
  "name" : "Alfred",
  "location" : "ADH",
  "vendorOrgId" : "2"
},
{
  "name" : "Alfred",
  "location" : "AFF",
  "vendorOrgId" : "41"
}]

供应商表

代码语言:javascript
复制
const vendorgs = [
  {
    "orgName" : "star super market",
    "_id" : "1",
    "category" : "grocery",
    "status" : "active"
  },
  {
    "orgName" : "L.f super market",
    "_id" : "41",
    "category" : "grocery",
    "status" : "active"
  },
  {
    "orgName" : "Fresh mart",
    "_id" : "2",
    "category" : "Milk",
    "status" : "active"
  }
]

我的查询

代码语言:javascript
复制
db.getCollection('vendors').aggregate([{
        "$lookup": {
            "from": "vendorgs",
            "localField": "vendorOrgId",
            "foreignField": "_id",
            "as": "data"
        },
    },
     {
        "$group": {
            "_id": "$data.category",
            "category":{"$push":"$data"},

        }
    },
{
        "$match": {
            "category.status":true
        }
    }
])

上面的查询返回空数组

预期结果

代码语言:javascript
复制
{
    "grocery": [{
            "name": "Alfred",
            "location": "FH",
            "vendorOrgId": "1"
        },
        {
            "name": "Alfred",
            "location": "AFF",
            "vendorOrgId": "41"
        }
    ],
    "milk": [{
        "name": "Alfred",
        "location": "ADH",
        "vendorOrgId": "2"
    }]
}

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 13:34:26

终于找到了答案。应在分组前写入匹配

代码语言:javascript
复制
db.getCollection('vendors').aggregate([{
        "$lookup": {
            "from": "vendorgs",
            "localField": "vendorOrgId",
            "foreignField": "_id",
            "as": "data"
        },
    },
{
        "$match": {
            "status":"active"
        }
    },
     {
        "$group": {
            "_id": "$data.category",
            "category":{"$push":"$data"},

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

https://stackoverflow.com/questions/65734857

复制
相关文章

相似问题

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