簡體   English   中英

MapReduce 與 MongoDB

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM