我的理解是,当您在 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 类及其所有相关文档。由于这些模型中的每一个都基于 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)虽然我在本地机器上执行了这个操作,但我仍然想知道,有没有办法从更改的集合中删除孤立文档?