在golang和mongodb中使用match stage从两个集合中获取数据
我的mongodb收藏是在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" } { _
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