Mongoで親ドキュメントを破棄すると、その子も破棄され、参照されているすべてのドキュメントが削除されるまでチェーンをカスケードすることを理解していました。
私は次のようなコレクション構造を持っています
class A
include Mongoid::Document
field :name, :type => String
has_many :bs
end
class B
include Mongoid::Document
field :name, :type => String
has_many :cs
end
class C
include Mongoid::Document
field :name, :type => String
end
コード内で、クラスAの1つとそれに関連するすべてのドキュメントを削除する必要がある状況に遭遇しました。これらの各モデルはMongoidに基づいているため、destroy_allメソッドを次のように使用しました。
a = A.where({'_id' => "123456789"})
a.bs.destroy_all
=> 'however many a's I had'
ドキュメントを読んだことから、参照されている各ドキュメントも削除されると思いました。
残念ながら、発生したのはクラスbがすべてなくなっており、データベースに孤立したクラスcがたくさんあることです。
それで:
A)destroy_allが私が思っていたように動作しないと仮定します。親とその参照されているすべてのドキュメントをmongoidで実際に削除するために使用できるものはありますか?
B)ローカルマシンでこの操作を実行しましたが、それでも知りたいのですが、変更されたコレクションから孤立したドキュメントを削除する方法はありますか?