我正在構建一個使用 mongodb 資料庫的輔助專案。我正在使用 MERN 堆疊用我的資料構建一個 Web 應用程式。我正在使用 Mongoose 從 NodeJS/Express 服務器上的資料庫中獲取資料以構建我的 REST API。這是我擁有的資料的示例。我有需要檢索的深層嵌套子檔案。每個用戶都有一組“聯系人”。每個“聯系人”都有一組“任務”。我想獲得嵌套在每個用戶中的所有任務的陣列。例如,如果一個用戶有 2 個聯系人,每個聯系人有 3 個任務,我想要一個有 6 個任務的陣列。
{
userName: 'jdoe',
uid: 12343,
contacts: [
{
name: 'Jane Doe',
tasks:[
{
taskName: 'Task1'
},
{
taskName: 'Task2'
},
{
taskName: 'Task3'
},
]
},
{
name: 'Bob Smith',
tasks:[
{
taskName: 'TaskA'
},
{
taskName: 'TaskB'
},
{
taskName: 'TaskC'
},
]
}
]
}
為了用貓鼬查詢我的資料,我嘗試了這樣的事情
User.findOne({uid: req.params.uid}, 'contacts.tasks', (yasks,err)=>{
if(err){
res.send(err)
}else{
res.send(tasks)
}
})
但是,此查詢回傳類似這樣的內容
{
"_id": "353453",
"contacts": [
{
"tasks": [
{
taskName: 'Task1'
}
]
},
{
"tasks": [
{
taskName: 'Task1'
},
{
taskName: 'Task1'
}
]
},
{
"tasks": []
},
{
"tasks": []
}
]
}
我正在尋找這樣的回應
[
{
taskName: 'Task1'
},
{
taskName: 'Task1'
},
taskName: 'Task1'
},
{
taskName: 'Task1'
}
]
我想知道是否有任何方法可以用貓鼬做到這一點。如果沒有,我可以運行什么樣的 javascript 來將我的資料轉換成這樣的結構?
uj5u.com熱心網友回復:
您可以$reduce為此使用:
User.aggregate([
{$match: {uid: req.params.uid}},
{
$project: {
tasks: {
$reduce: {
input: "$contacts",
initialValue: [],
in: {$concatArrays: ["$$value", "$$this.tasks"]}
}
},
_id: 0
}
}
])
看看它在操場上的例子是如何作業的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/487236.html
標籤:javascript 节点.js mongodb 猫鼬
