我有一個看起來像這樣的檔案:
{
_id: ObjectId("6222ca4252925ad4c3faec08"),
value: ["test1","test2"]
}
我想得到:
{
_id: ObjectId("6222ca4252925ad4c3faec08"),
“value”:
{
“value1”: "test1",
“value2”: "test2"
}
}
我曾嘗試使用 reduce,但我將每個值都放在一個物件中,但非常接近。請讓我知道我做錯了什么:
代碼:
{
"$project": {
"value": {
$reduce: {
input: "$value",
initialValue: [],
in: {$concatArrays: [
"$$value",
[{"name": "$$this"}]
]}
}
}
}
}
結果:
{
"_id" : ObjectId("6222ca4252925ad4c3faec08"),
"value" : [
{
"name" : "test1"
},
{
"name" : "test2"
}
]
}
uj5u.com熱心網友回復:
目前您只是使用 創建一個陣列$reduce,相反您可以嘗試使用$map創建一個格式陣列,[key, value]然后使用$arrayToObject將其轉換為地圖,如下所示:
[
{
"$project": {
"provider": {
"$arrayToObject": {
"$map": {
"input": "$value",
"as": "v",
"in": [
{
"$concat": [
"value",
{
"$toString": {
"$indexOfArray": [
"$value",
"$$v"
]
}
}
]
},
"$$v"
]
}
}
}
}
}
]
這$indexOfArray只是為了獲取格式的關鍵value(N)。
蒙戈游樂場
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438880.html
