2017-02-23 178 views
0
拆分JSON文件

,我有以下格式的文件:如何蒙戈

{ 
"_id" : ObjectId("58af1ee3f78a9945bd9fc94d"), 
"rounds" : { 
    "matches" : { 
     "team1" : { 
      "name" : "Manchester United", 
      "score1" : 1 
     }, 
     "team2" : { 
      "name" : "Tottenham Hotspur", 
      "score2" : 0 
     } 
    } 
}} 

而且我想獲得somenthing這樣的:

{ 
"_id" : ObjectId("SomeID"), 
"rounds" : { 
    "matches" : { 
     "team1" : { 
      "name" : "Manchester United", 
      "score1" : 1 
     } 
    } 
} 

}

{ 
"_id" : ObjectId("SomeID"), 
"rounds" : { 
    "matches" : { 
     "team2" : { 
      "name" : "Tottenham Hotspur", 
      "score2" : 0 
     } 
    } 
} 

}

我正在尋找像放鬆一樣的東西,但放鬆只適用於陣列。我如何將匹配轉換爲JSON數組?任何其他的想法,以達到預期的效果,是值得歡迎的

+0

爲什麼你不把數據保持爲數組?任何具體原因? – notionquest

+0

匹配是嵌套字段,而不是數組。如果我可以將匹配轉換爲數組,我會放鬆。這是我唯一的想法,但我不知道該怎麼做 – lacrima

+0

也許嘗試使用[$切片](https://docs.mongodb.com/manual/reference/operator/projection/slice/) – matt

回答

1

也許一個mapreduce函數,只有一個映射函數?我不太瞭解你的用例,但是如果你一次只返回一個文檔,那麼在mongo返回結果後重建可能是最好的。

db.somcollection.mapReduce(
function(){ 
    var matcharray = []; 
    for (var match in this.rounds.matches) { 
     if (this.rounds.matches.hasOwnProperty(match)) { 
      matcharray.push({team:match,other:this.rounds.matches[match]}); 
     } 
    } 
    emit('matches',matcharray); 

}, 
function(key,values){ 
    return (values); 
}, 
{ 
    query:{"_id" : ObjectId("58af1ee3f78a9945bd9fc94d")}, 
    out: "somename" 
}).find() 

這會導致以下結果,它至少是一個數組,但不是您想要的所有內容都使用鍵/值對。

{ 
"_id" : "matches", 
"value" : [ 
    { 
     "team" : "team1", 
     "other" : { 
      "name" : "Manchester United", 
      "score1" : 1 
     } 
    }, 
    { 
     "team" : "team2", 
     "other" : { 
      "name" : "Tottenham Hotspur", 
      "score2" : 0 
     } 
    } 
] 
} 
+0

對不起,我沒有我沒有迴應。感謝您的回答,它幫助了很多:) – lacrima