在golang和mongodb中使用match stage从两个集合中获取数据

在golang和mongodb中使用match stage从两个集合中获取数据,mongodb,go,Mongodb,Go,我的mongodb收藏是 employee { _id:ObjectId(), "emp_name":"qwert", "emp_id":111, "emp_dept":"XYZ" "qualification":"PHD", "employee_status":"working" } { _

我的mongodb收藏是

employee
{
  _id:ObjectId(),
  "emp_name":"qwert",
  "emp_id":111,
  "emp_dept":"XYZ"
  "qualification":"PHD",
   "employee_status":"working"
}
{
_id:ObjectId(),
  "emp_name":"asdfg",
  "emp_id":121,
  "emp_dept":"XYZ"
 "qualification":"MBA"
 "employee_status":"working"
}
department{
_id:ObjectId(),
"dept_id":11,
"dept_name":"XYZ",
"description":"decs",
"department_status":"active"
}
我的密码是

 type DepartmentInfo struct {
    DepartmentID    int                `json:"dept_id" bson:"dept_id"`
    DepartmentName  string             `json:"dept_name" bson:"dept_name"` 
    Description     string             `json:"description" bson:"description"` 
    EmployeeCount   int                `json:"employee_count" bson:"employee_count"`
}

collection := session.DB("db").C("employee")
pipeline := collection.Pipe([]bson.M{
        {"$match": bson.M{ "qualification": "PHD", }},
        {"$group": bson.M{"_id": "$emp_dept",}},
        {"$lookup": bson.M{
        "from":         "department",
        "localField":   "_id",
        "foreignField": "dept_name",
        "as":           "department_info",
    }},
     {"$unwind": "$department_info"},
     {"$match": bson.M{"$or": []interface{}{
        bson.M{"department_info.status": bson.M{"$exists": false}},
        bson.M{"department_info.status": 1}, // department 1 means active
    }}},   
    })
var departmentInfo [] Department
err = pipeline.All(&departmentInfo)
它返回所有结构值为空的列表,但当我使用
var documentInfo[]接口{}
并打印它时,它会显示所有值。那么,如何将这些值绑定到struct slice呢

我想获取结构中的
EmployeeCount
最后一个字段。它将被计算为该特定部门(分组)中没有任何匹配阶段资格的员工总数

我想要像这样的输出

{
   dept_id:11,
   dept_name:'XYZ'
   description:'desc'
   employee_count:10
}
{
   dept_id:12,
   dept_name:'ABC'
   description:'desc'
   employee_count:20
}
................
  • 首先从拥有博士学位的员工集合中筛选数据
  • 获取该员工的部门名称,并从部门集合中获取部门信息
  • 那么检查部门应该是活跃的
  • 计算该特定部门的员工数量,条件为
    emp\u dept=XYZ
    employee\u status=working
  • 如何做到这一点