在mongodb中,我有一个结构文件:
{
"phone":"123",
"friends": {
"contacts":{
"234":2,
"345":5
}
}
}
我希望输出看起来像这样:
{
"123": {
"234":2,
"345":5
}
}
我正在寻找多种解决方案。似乎没有解决办法。
答案 0 :(得分:6)
您可以使用$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" }
}
}
])