我正在嘗試投影使用 $lookup 連接兩個檔案后得到的陣列的兩個元素。當我使用點符號訪問陣列元素時,如下所示 -
db.departments.aggregate([{
$lookup: {
from: 'employees',
localField: 'dep_id',
foreignField: 'department',
as: 'emps'
}
}, {
$project: {
_id: 0,
emp_id: 1,
salary: 1,
emp_name: '$emps.name',
username: '$emps.username'
}
}])
我得到以下結果 -
emp_id:910579
salary:100000
emp_name:Array
0:"Stephen Wolf"
username:Array
0:"StepWolf"
我想要的結果如下 -
emp_id:910579
salary:100000
emp_name:"Stephen Wolf"
username:"StepWolf"
有人有什么建議嗎?我想要一些可以將陣列元素轉換為屬性的東西,類似于 ObjectToArray 函式。
uj5u.com熱心網友回復:
查詢1
- 波紋管做
field : [m1 m2 m2]=>field : m1 - 獲取第一個成員并將其作為欄位的值
測驗代碼在這里
aggregate(
[{"$set":
{"emp_name": {"$arrayElemAt": ["$emp_name", 0]},
"username": {"$arrayElemAt": ["$username", 0]}}}])
查詢2
- 如果你的MongoDB> = 5,你可以使用
$first還
測驗代碼在這里
aggregate(
[{"$set":
{"emp_name": {"$first": "$emp_name"},
"username": {"$first": "$username"}}}])
在您的情況下,在您已有的專案中使用 query1 或 query2,例如:
{
$project: {
_id: 0,
emp_id: 1,
salary: 1,
"emp_name": {"$first": "$emp_name"},
"username": {"$first": "$username"}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/368772.html
