我正在嘗試在 MongoDB 中撰寫一個聚合,結果如下所示。請向我建議如何構建 MongoDB 聚合以實作我的輸出。
集合(輸入):我想根據匹配條件qf_id為物件添加一個鍵。wkObj.cFScf_id
輸入檔案:
[
{
"dataObj": {
"dataObj_id": "test_1",
"cFS": {
"data": [
{
"cf_id": "123",
"name": "cf_1"
},
{
"cf_id": "456",
"name": "cf_2"
}
]
}
},
"cfCoreData": [
{
"cf_id": "123",
"qf_id": "QF_1989"
},
{
"cf_id": "456",
"qf_id": "QF_6090"
}
]
}
]
預期結果:
[
{
"cfCoreData": [
{
"cf_id": "123",
"qf_id": "QF_1989"
},
{
"cf_id": "456",
"qf_id": "QF_6090"
}
],
"dataObj": {
"dataObj_id": "test_1",
"cFS": {
"data": [
{
"cf_id": "123",
"name": "cf_1",
"qf_id": "QF_1989"
},
{
"cf_id": "456",
"name": "cf_2",
"qf_id": "QF_6090"
}
]
}
}
}
]
當我嘗試以下查詢時,它作為陣列添加。
db.collection.aggregate({
$addFields: {
"dataObj.cFS.data.qf_id": "$cfCoreData.qf_id"
}
})
請提出一種撰寫 MongoDB 查詢以實作我的結果的最佳方法。
uj5u.com熱心網友回復:
$set- 設定dataObj.cFS.data欄位。1.1。
$map- 迭代每個元素dataObj.cFS.data并回傳一個新陣列。1.1.1。
$mergeObjects- 將當前迭代物件 (data) 與1.1.1.1的結果合并。1.1.1.1。- 從結果1.1.1.1.1
$first中獲取第一個過濾的檔案。1.1.1.1.1。
$filter-cfCoreData通過匹配來過濾陣列中的檔案cf_id。
db.collection.aggregate([
{
$set: {
"dataObj.cFS.data": {
$map: {
input: "$dataObj.cFS.data",
as: "data",
in: {
$mergeObjects: [
"$$data",
{
$first: {
$filter: {
input: "$cfCoreData",
cond: {
$eq: [
"$$data.cf_id",
"$$this.cf_id"
]
}
}
}
}
]
}
}
}
}
}
])
演示@Mongo Playground
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/533246.html
上一篇:MongoDB中的GUID
