У меня mongo_mapper настроен так:
class Person
include MongoMapper::Document
many :pets
end
class Pet
include MongoMapper::EmbeddedDocument
key :animal, String
key :name, String
key :colour, String
end
# Create a person
me = Person.new
# Add pets to the person
me.pets << Pet.new(:animal => 'dog',:name => 'Mr. Woofs', :colour => 'golden')
me.pets << Pet.new(:animal => 'cat', :name => 'Kitty', :colour => 'black')
me.pets << Pet.new(:animal => 'cat', :name => 'Freckles', :colour => 'black')
me.pets << Pet.new(:animal => 'cat', :name => 'Fluffy', :colour => 'tabby')
Я знаю, что могу очень просто удалить всех питомцев (me.pets
работает как массив, но также перезванивает)
# Delete all pets
me.pets.clear
Я также знаю, что могу удалить всех черных кошек, выполнив это:
# Delete black cats
me.pets.delete_if {|pet| pet.animal == 'cat' and pet.colour = 'black'}
Но, похоже, потребуется очень много времени, если будет проходить большое количество питомцев.
Я чувствую, что должен быть способ выбрать только черных кошек, а затем вместо этого clear
этот массив . Есть ли такой способ?