【问题标题】:mongodb aggregate function and return the result based on the conditionmongodb聚合函数并根据条件返回结果
【发布时间】:2021-01-15 21:34:26
【问题描述】:

我有两张表 vendor 和 vendorgs。 我的情况如下, 1.vendors表vendorOrgId === vendorgs表_id 2.status === vendorgs 表中的“活动” 如果满足上述条件,则按 vendorgs 表类别对供应商进行分组。 有可能做到这一点

供应商表

const vendors = [{
  "name" : "Alfred",
  "location" : "FH",
  "vendorOrgId" : "1"
},
{
  "name" : "Alfred",
  "location" : "ADH",
  "vendorOrgId" : "2"
},
{
  "name" : "Alfred",
  "location" : "AFF",
  "vendorOrgId" : "41"
}]

供应商表


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"
  }
]

我的查询

db.getCollection('vendors').aggregate([{
        "$lookup": {
            "from": "vendorgs",
            "localField": "vendorOrgId",
            "foreignField": "_id",
            "as": "data"
        },
    },
     {
        "$group": {
            "_id": "$data.category",
            "category":{"$push":"$data"},

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

上面的查询返回空数组

预期结果

{
    "grocery": [{
            "name": "Alfred",
            "location": "FH",
            "vendorOrgId": "1"
        },
        {
            "name": "Alfred",
            "location": "AFF",
            "vendorOrgId": "41"
        }
    ],
    "milk": [{
        "name": "Alfred",
        "location": "ADH",
        "vendorOrgId": "2"
    }]
}

谢谢!!

【问题讨论】:

    标签: mongodb aggregation


    【解决方案1】:

    终于在自己身上找到了答案。应该在分组之前写匹配

    db.getCollection('vendors').aggregate([{
            "$lookup": {
                "from": "vendorgs",
                "localField": "vendorOrgId",
                "foreignField": "_id",
                "as": "data"
            },
        },
    {
            "$match": {
                "status":"active"
            }
        },
         {
            "$group": {
                "_id": "$data.category",
                "category":{"$push":"$data"},
    
            }
        }
    ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-26
      • 2021-09-20
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 2019-01-14
      相关资源
      最近更新 更多