[英]MapReduce with MongoDB
我在 MongoDB 上有一個這樣的文檔:
[
{
"option": "My fav food is pizza",
"person": {
"id": 1,
"name": "John"
},
"location": {
"country": "UK",
"europe": "N"
}
},
{
"option": "I love football",
"person": {
"id": 2,
"name": "Jack"
},
"location": {
"country": "UK",
"europe": "N"
}
}
]
我必須使用 MapReduce 獲得這樣的東西:
{
"country": "UK",
"value": {
"count": 2,
"sentences": [
"I love football",
"My fav food is pizza"
],
"people": [
"Jack",
"John"
]
}
}
問題是我必須在 Javascript 上使用 MapReduce(map、reduce 和 finalize)來處理它,我有點堅持它。
我找不到任何像這樣難的好例子......
我將不勝感激任何幫助 :)
我們可以在這里寫一個reducer來從數組中創建一個新對象。
下面的代碼是這種實現的說明
const dataEntity = [ { "option": "My fav food is pizza", "person": { "id": 1, "name": "John" }, "location": { "country": "UK", "europe": "N" } }, { "option": "I love football", "person": { "id": 2, "name": "Jack" }, "location": { "country": "UK", "europe": "N" } } ]; let items = 0; let sentences = []; let people = []; const transformedObject = dataEntity.reduce((acc, curr)=>{ debugger; items+=1; sentences.push(curr.option); people.push(curr.person.name); acc["country"]=curr.location.country; if(!acc["value"]){ acc["value"]={}; } acc["value"]["count"] = items; acc["value"]["sentences"]=sentences; acc["value"]["people"]=people; return acc; },{}) console.log(transformedObject);
這是一個簡單的說明。 您可以進一步修改此代碼段以滿足要求。
干杯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.