在mongodb中,我有一个结构文件:
{
"phone":"123",
"friends": {
"contacts":{
"234":2,
"345":5
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像:
{
"123": {
"234":2,
"345":5
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找多种解决方案。似乎并没有找到解决方案。
您可以使用$ arrayToObject创建自定义键(将对数组k-v作为参数),然后可以使用$ replaceRoot获取自定义根对象,请尝试:
db.collection.aggregate([
{
$match: {
phone: { $exists: true },
"friends.contacts": { $exists: true }
}
},
{
$addFields: {
array: [{
k: "$phone",
v: "$friends.contacts"
}]
}
},
{
$replaceRoot: {
newRoot: { $arrayToObject: "$array" }
}
}
])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |