0
我已經mongo_mapper設置像這樣:與蒙戈映射刪除EmbeddedDocuments
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
。有沒有這樣的方式?
我很欣賞這個回答,但不幸的是:'NoMethodError:undefined method'all'for []:Array'。我知道像這樣的集合在數組上迭代不會花費大量時間,但我期望一次處理10,000個嵌入文檔的順序,並且最多隻需要刪除約10個! – 2010-08-31 21:00:41
JP,你會花多長時間用你知道截至目前爲止最快的方式清空1000個嵌入式文檔? – 2011-02-23 04:57:26