Sha256: 6583ede78c43e203e96542754db4ea3503a5a74931902b0b9a8ee34ce241d64d

Contents?: true

Size: 756 Bytes

Versions: 2

Compression:

Stored size: 756 Bytes

Contents

// TODO: port it to map reduce
function tagCloud(collection, q, limit) {
  var counts = db.eval(
    function(collection, q){
      var counts = {constructor: 0};
      db[collection].find(q, {"tags":1}).limit(500).forEach(
        function(p){
          if ( p.tags ){
            for ( var i=0; i<p.tags.length; i++ ){
              var name = p.tags[i];
              counts[name] = 1 + ( counts[name] || 0 );
            }
          }
        }
      );
      if(counts["constructor"] == 0) { delete counts.constructor; }
      return counts;
    },
    collection,
    q
  );

  // maybe sort to by nice
  var sorted = [];
  for ( var tag in counts ){
    sorted.push( { name : tag , count : counts[tag] } )
  }

  return sorted.slice(0,limit||30);
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mongoid_ext-0.9.0 lib/mongoid_ext/js/tag_cloud.js
mongoid_ext-0.7.1 lib/mongoid_ext/js/tag_cloud.js