有沒有辦法在嵌套欄位中插入內容:“url_alternative.url”中的“urls2.url_breed”?我有很多檔案要像這樣處理
{ "_id": { "$oid": "625f2900fe6aeb351381c3ff" },
"breed": "Alaskan Malamute",
"origin": "United States (Alaska)",
"url_alternative": [
{
"urls": [
"url23","url25"
]
}
],
"url": "https://en.wikipedia.org/wiki/Alaskan_Malamute",
"img": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Alaskan_Malamute.jpg/300px-Alaskan_Malamute.jpg",
"urls2": [
{"_id": {"$oid": "627c04199569b8c2f566d15d"},
"breed": "Alaskan Malamute",
"url_breed": [ "url1", "url2" ]}
]}
期望的輸出:
{ "_id": { "$oid": "625f2900fe6aeb351381c3ff" },
"breed": "Alaskan Malamute",
"origin": "United States (Alaska)",
"url_alternative": [
{
"urls": [
"url1","url2",
"url23","url25"
]
}
],
"url": "https://en.wikipedia.org/wiki/Alaskan_Malamute",
"img": "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Alaskan_Malamute.jpg/300px-Alaskan_Malamute.jpg",
]}
在某些情況下 url_alternative 為空,但我仍然想插入“urls2”的內容,因為這個總是被填充的:
"url_alternative": [
{
"urls": [
]
}
],
uj5u.com熱心網友回復:
由于您的高度嵌套結構,這在查詢中可能會很復雜,但這個想法很簡單。通過 構造 2 個陣列的元組$zip,迭代結果并使用$concatArrays“將它們展平為一個陣列。
db.collection.update({},
[
{
$addFields: {
"url_alternative.urls": {
"$reduce": {
"input": {
"$reduce": {
"input": {
"$zip": {
"inputs": [
"$url_alternative",
"$urls2"
]
}
},
"initialValue": [],
"in": {
"$concatArrays": [
"$$value",
"$$this.urls",
"$$this.url_breed"
]
}
}
},
"initialValue": [],
"in": {
"$concatArrays": [
"$$value",
"$$this"
]
}
}
}
}
}
],
{
multi: true
})
這是Mongo Playground供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474019.html
上一篇:Mongo專案添加到陣列
