> db.combos.find()
{_id:1, a:[ 1,2,3]}
> db.combos.aggregate({$project:{_id:0, pairs: <generate-all-pairs>}})
{pairs: [ [1,2], [1,3], [2,3] ]}
{$reduce:{
input:{$range:[0,{$size:"$a"}]},
initialValue:[],
in:{$concatArrays:[
"$$value",
{$let:{
vars:{i:"$$this"},
in:{$map:{
input:{$range:[{$add:[1,"$$i"]},{$size:"$a"}]},
in:[ {$arrayElemAt:["$a","$$i"]}, {$arrayElemAt:["$a","$$this"]}] }}
}}
]}
}}
pairs = [];
for (i=0; i<a.length; i++) {
for (j=a[i+1]; j<a.length; j++) {
pairs.push([ [a[i], a[j] ]);
}
}
RSS Feed