我有一个集合,其中每个文档都具有这种结构:
{
docName: "Document Name",
probabilities: [
{ topicName:"topic1", prob: 0.3 },
{ topicName:"topic2", prob: 0.4 },
{ topicName:"topic3", prob: 0.23 }
...
]
otherField: data,
...
}
我需要将它们变形为如下形式:
{
docName: "Document Name",
topic1: 0.3,
topic2: 0.4,
topic3: 0.23,
...
otherField: data,
...
}
我尝试使用$ arrayToObject和$ objectToArray,但是我不知道如何使它工作。
预先感谢您的帮助!
答案 0 :(得分:2)
您可以使用以下汇总
db.collection.aggregate([
{ "$replaceRoot": {
"newRoot": {
"$mergeObjects": [
"$$ROOT",
{ "$arrayToObject": {
"$map": {
"input": "$probabilities",
"in": {
"k": "$$this.topicName",
"v": "$$this.prob"
}
}
}}
]
}
}},
{ "$project": { "probabilities": 0 }}
])