summaryrefslogtreecommitdiff
path: root/week-7/final7/solve.rb
blob: 04684a8c084d500a9b69006afaf1f5a6ce87eed4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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