Advertisement
Guest User

mongo_join

a guest
Feb 10th, 2015
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. db.users.aggregate([
  2.     { "$group" : { "__tmp0" : { "$push" : "$$ROOT"} , "_id" : "$_id"}},
  3.     { "$project" : { "_id" : "$_id" , "value" : { "left" : "$__tmp0" , "right" : { "$literal" : [ ]} , "_id" : "$_id"}}},
  4.     { "$out" : "tmp.gen_0"}
  5.   ],
  6.   { allowDiskUse: true })
  7. db.posts.mapReduce(
  8.   function () {
  9.     emit.apply(null, (function (key, value) {
  10.         return [(value != null) ? value.user : undefined, {
  11.           "left": [],
  12.           "right": [value]
  13.         }];
  14.       })(this._id, this));
  15.   },
  16.   function (key, values) {
  17.     var result = {
  18.       "left": [],
  19.       "right": []
  20.     };
  21.     values.forEach(function (value) {
  22.         result.left = result.left.concat(value.left);
  23.         result.right = result.right.concat(value.right);
  24.       });
  25.     return result;
  26.   },
  27.   { "out" : { "reduce" : "tmp.gen_0" , "nonAtomic" : true}})
  28. db.tmp.gen_0.aggregate([
  29.     { "$match" : { "value.left" : { "$not" : { "$size" : 0}} , "value.right" : { "$not" : { "$size" : 0}}}},
  30.     { "$unwind" : "$value.left"},
  31.     { "$unwind" : "$value.right"},
  32.     { "$group" : { "cnt" : { "$sum" : { "$literal" : 1}} , "displayName" : { "$push" : "$value.left.displayName"} , "_id" : "$value.right.user"}},
  33.     { "$unwind" : "$displayName"},
  34.     { "$group" : { "__tmp1" : { "$first" : "$$ROOT"} , "_id" : { "0" : "$cnt" , "1" : "$displayName"}}},
  35.     { "$project" : { "cnt" : "$__tmp1.cnt" , "displayName" : "$__tmp1.displayName" , "_id" : false}},
  36.     { "$out" : "tmp.gen_1"}
  37.   ],
  38.   { allowDiskUse: true })
  39. db.tmp.gen_0.drop()
  40. db.tmp.gen_1.find()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement