diff options
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 |
