我有两张桌子--小贩和供应商。我的条件如下:1.供应商表vendorOrgId ===供应商表_id 2.如果上述条件通过供应商表类别满足供应商组,则供应商表中的状态===“活动”。是有可能的
供应商表
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"
}]
}谢谢!!
发布于 2021-01-15 13:34:26
终于找到了答案。应在分组前写入匹配
db.getCollection('vendors').aggregate([{
"$lookup": {
"from": "vendorgs",
"localField": "vendorOrgId",
"foreignField": "_id",
"as": "data"
},
},
{
"$match": {
"status":"active"
}
},
{
"$group": {
"_id": "$data.category",
"category":{"$push":"$data"},
}
}
])https://stackoverflow.com/questions/65734857
复制相似问题