考虑以下插图,其中字母为组,数字为元素:
每个小组都有权获取每个共享元素: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"
]
}
任何帮助都会非常感激。
非常感谢。