目前我的address
列是我users
表中的嵌入式文档。 address
列包含_id
表中相关行的address
。每个user
可以有多个addresses
,因此如果该用户有多个地址,user
address
列中可能会有多个嵌入式文档。
如何删除特定地址address
的所有id
嵌入式文档?在我的情况下,当用户删除地址时,我想从users表中的address
嵌入文档的 ALL 中删除该特定地址。
这可以在rails控制台中使用吗?
由于
答案 0 :(得分:1)
你可以这样做:
User.where('addresses.id' => address.id).each do |u|
u.addresses.where(:id => address.id).delete
u.save
end
答案 1 :(得分:0)
你也可以这样做:
while User.where('addresses._id' => address.id).count > 0
User.collection.update({'addresses._id' => address.id},
{'$pull' => { :addresses => { '_id' => address.id } } },
:multi => true)
end
这不会运行任何回调。如果您需要任何回调,则应使用shingara的方法,但将delete
替换为destroy