diff options
| author | mo khan <mo@mokhan.ca> | 2015-02-21 22:10:49 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2015-02-21 22:10:49 -0700 |
| commit | 865a5700c8609929574c63f3f03aec7d302be997 (patch) | |
| tree | 1957761935eb32197f28648165231b528bc1d8f2 /week-7/final7/solve.rb | |
| parent | fe7e28edee40691d8b1189769a9b1b9939686d77 (diff) | |
| parent | 10d3fd510f9a546ebbbbb0e4166f7c639af1f05e (diff) | |
merge with master.main
Diffstat (limited to 'week-7/final7/solve.rb')
| -rw-r--r-- | week-7/final7/solve.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/week-7/final7/solve.rb b/week-7/final7/solve.rb new file mode 100644 index 0000000..04684a8 --- /dev/null +++ b/week-7/final7/solve.rb @@ -0,0 +1,38 @@ +require 'rubygems' +require 'bundler' +Bundler.require + +def main + client = Mongo::MongoClient.new + db = client['final7'] + images_collection = db['images'] + albums_collection = db['albums'] + + albums = albums_collection.aggregate([ + { '$unwind': '$images' }, + { '$project': { '_id': '$images' } }, + { '$group': { '_id': '$_id', count: { '$sum': 1 } } }, + ]) + used_images = albums.reduce({}) do |memo, image| + memo[image['_id']] = true + memo + end + images = images_collection.find().to_a + deleted = 0 + images.each do |image| + image_id = image['_id'] + if used_images.key?(image_id) == false + puts "Deleting: #{image_id}" + images_collection.remove("_id": image_id) + deleted += 1 + end + end + puts "USED: #{used_images.size}" + puts "DELETED: #{deleted}" + puts "TOTAL: #{images_collection.find.count}" + + tagged_kittens = images_collection.find({ 'tags': 'kittens' }).count() + puts "Kittens: #{tagged_kittens}" +end + +main |
