可以使用MongoDB / MapReduce来解决我的以下情况吗?

时间:2015-03-25 17:59:20

标签: javascript algorithm mongodb mapreduce

考虑以下插图,其中字母为组,数字为元素:

enter image description here

考虑以下问题:

每个小组都有权获取每个共享元素:Math.ceil(nb elements / 2)

含义A可以获得元素:
- 1(与D共享)
- 1或2(与B共用)
- 3或4(与C共享)

所以A可以有最多3个不同的元素。

B可以获取元素:
- 1或2(与A共用)
- 1(与D共享)
所以B可以有最多2个不同的元素。

C可以获取元素:
- 3或4(与A共用)
所以C可以有最多 1个不同的元素。

D可以获取元素:
- 1(与A共用)
所以D可以有最多 1个不同的元素。

现在我的问题是:
是否可以使用mapreduce或其他东西来获取mongoDB的这些结果?

  

我等待的结果如下:

>A => 3  
>B => 2  
>C => 1  
>D => 1  

Collection模式如何能够执行mapreduce(如果可能的话?

(目前我的测试用的是:

/* 0 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c1603c"),
    "lead" : 1,
    "pdv" : "A",
    "etat" : "p",
    "conc" : [ 
        "B", 
        "D"
    ]
}

/* 1 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c1603d"),
    "lead" : 2,
    "pdv" : "A",
    "etat" : "p",
    "conc" : [ 
        "B"
    ]
}

/* 2 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c1603e"),
    "lead" : 3,
    "pdv" : "A",
    "etat" : "p",
    "conc" : [ 
        "C"
    ]
}

/* 3 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c1603f"),
    "lead" : 4,
    "pdv" : "A",
    "etat" : "p",
    "conc" : [ 
        "C"
    ]
}

/* 4 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c16040"),
    "lead" : 1,
    "pdv" : "B",
    "etat" : "p",
    "conc" : [ 
        "A", 
        "D"
    ]
}

/* 5 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c16041"),
    "lead" : 1,
    "pdv" : "D",
    "etat" : "p",
    "conc" : [ 
        "A", 
        "B"
    ]
}

/* 6 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c16042"),
    "lead" : 2,
    "pdv" : "B",
    "etat" : "p",
    "conc" : [ 
        "A"
    ]
}

/* 7 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c16043"),
    "lead" : 3,
    "pdv" : "C",
    "etat" : "p",
    "conc" : [ 
        "A"
    ]
}

/* 8 */
{
    "_id" : ObjectId("5512d8a5aa9e92bfc3c16044"),
    "lead" : 4,
    "pdv" : "C",
    "etat" : "p",
    "conc" : [ 
        "A"
    ]
}  

任何帮助都会非常感激。

非常感谢。

0 个答案:

没有答案