這是我的理解,當你在Mongo中銷燬父文檔時,你也銷燬它的子節點,並且它會級聯到鏈中,直到所有引用的文檔都被刪除。在mongo數據庫中刪除orhpan子文檔
我有如下所示
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
我在我的代碼跨形勢下應運而生,我需要刪除類之一,其所有相關文件的集合結構。由於這些模型中的每一個都是基於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)雖然我在本地機器上執行了這個操作,但我仍然想知道,是否有任何方法可以從已更改的集合中刪除孤立文檔?