按MonogoDB MapReduce中的密钥对文档进行分组

时间:2016-08-15 04:23:37

标签: mongodb mapreduce grouping composite-key

我在MongoDB中尝试MapReduce程序,我有以下数据类型的MongoDB集合:

{ "_id" : ObjectId("57aea85af405910cfcd2bfeb"), "friendList" : [ "Karma", " Tom", " Ram", " Bindu", " Shiva", " Kishna", " Bikash", " Bakshi", " Dinesh" ], "user" : "Hari" }

{ "_id" : ObjectId("57aea85bf405910cfcd2bfec"), "friendList" : [ "Karma", " Sita", " Bakshi", " Hanks", " Shyam", " Bikash" ], "user" : "Howard" }

{ "_id" : ObjectId("57aea85cf405910cfcd2bfed"), "friendList" : [ "Dinesh", " Ram", " Hanks", " Bindu", " Howard", " Bikash", " Shyam", " Bakshi" ], "user" : "Sita" }

{ "_id" : ObjectId("57aea85cf405910cfcd2bfee"), "friendList" : [ "Hanks", " Tom", " Karma", " Hari", " Dinesh" ], "user" : "Shiva" }

{ "_id" : ObjectId("57aea85cf405910cfcd2bfef"), "friendList" : [ "Bakshi", " Kishna", " Hanks", " Shiva", " Bindu", " Hari", " Karma", " Sita" ], "user" : "Dinesh" }

我的代码:

map = Code("""
           function () {
               for (var i=0; i<this.friendList.length; i++)
            {
            var friendValue = this.friendList[i];
            var userValue = this.user;

            var tempUserValue = userValue.toLowerCase().trim();
            var tempFriendValue = friendValue.toLowerCase().trim();

                if(tempUserValue>tempFriendValue)
                    {
                    var temp = userValue;
                    userValue = friendValue;
                    friendValue = temp; 
                    }

这里我使用了复合键,现在在将这个键值对发送到reducer之前,已经有了排序键。

例如我的输出是:

{
"_id" : {
    "user" : "Dinesh",
    "friend" : " Hari"
},
"value" : {
    "friendList" : [
        "Karma",
        " Tom",
        " Ram",
        " Bindu",
        " Shiva",
        " Kishna",
        " Bikash",
        " Bakshi",
        " Dinesh"
    ]
}

}

并且:

{
"_id" : {
    "user" : "Dinesh",
    "friend" : " Hari"
},
"value" : {
    "friendList" : [
        "Bakshi",
        " Kishna",
        " Hanks",
        " Shiva",
        " Bindu",
        " Hari",
        " Karma",
        " Sita"
    ]}}

但我希望输出如下:

"_id" : {
    "user" : "Dinesh",
    "friend" : " Hari"
},
"value" : {
    "friendList" : [
        "Bakshi",
        " Kishna",
        " Hanks",
        " Shiva",
        " Bindu",
        " Hari",
        " Karma",
        " Sita"
    ]
    [
        "Karma",
        " Tom",
        " Ram",
        " Bindu",
        " Shiva",
        " Kishna",
        " Bikash",
        " Bakshi",
        " Dinesh"
    ]}

我正在尝试但无法得到它。我非常感谢你的帮助。

0 个答案:

没有答案