我在 mongodb 中有三个集合,例如
employeeTitleTbl contains
{
"_id": ObjectId("5a7c2027d2ccda04d0006070"),
"EmployeeTitleName": "Librarian",
"EmployeeTitleCode": "ji8766",
..
}
DepartmentsTbl contains
{
"_id": ObjectId("5a817402d2ccda13240015a5"),
"DepartmentCode": "149",
"DepartmentName": "Biology",
..
}
EmployeesTbl contains
{
"_id": ObjectId("5a81957bd2ccda13240015a8"),
"EmployeeNumber": "25789998",
"JobTitle": ObjectId("5a7c2008d2ccda04d000606f"),
"Department": ObjectId("5a8173e6d2ccda13240015a4"),
...
}
我对mongodb很新,而且驱动也更新了3.6,所以很难在php中找到最新的聚合方法。所以我正在调整下面的代码,以便在EmployeesTbl中添加部门和员工职位的实际值,例如“EmployeeTitleName”和“DepartmentName”。
public function fetchAll()
{
$pipeline = array(
array(
'$lookup' => array(
'from' => 'DepartmentsTbl',
'localField' => 'Department',
'foreignField' => '_id',
'as' => 'DepartmentDetails'
)
),
array(
'$lookup' => array(
'from' => 'employeeTitleTbl',
'localField' => 'JobTitle',
'foreignField' => '_id',
'as' => 'JobTitleDetails'
)
),
);
try
{
$cursor = $this->db->EmployeesTbl->aggregate($pipeline);
}
catch(Exception $e){
}
return $cursor->toArray();
}
请用最新的方法帮助我!!!
输出就像
array(2) { [0]=> object(MongoDB\Model\BSONDocument)#29 (1) { ["storage":"ArrayObject":private]=> array(25) { ["_id"]=> object (MongoDB\BSON\ObjectId)#10 (1) { ["oid"]=> string(24) "5a8176c0d2ccda13240015a6" } ["EmployeeNumber"]=> string(8) "25799989".... ... ....... ["DepartmentDetails"]=> object(MongoDB\Model\BSONArray)#27 (1) { ["storage":"ArrayObject":private]=> array(0) { } } [" JobTitleDetails"]=> object(MongoDB\Model\BSONArray)#28 (1) { ["storage":"ArrayObject":private]=> array(0) { } } } [1]=..... ……