首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Mongoid模型中删除属性,即不仅仅是将它们的值设为空

如何从Mongoid模型中删除属性,即不仅仅是将它们的值设为空
EN

Stack Overflow用户
提问于 2012-02-05 04:32:56
回答 4查看 3.8K关注 0票数 8

我在Mongoid中试验了多态联想

代码语言:javascript
运行
复制
class Group
    include Mongoid::Document
    belongs_to :groupable, polymorphic: true
end

class Album
    include Mongoid::Document
    has_many :groups, as: groupable
end

然后我决定不这么做了。所以我删除了上面所有的belongs_to和has_many行。然而,在控制台中,每当我得到一个我尝试过的组记录时,它仍然有这个"groupable_type“属性。我知道remove_attribute会将该属性置为空,但不会删除它(听起来有点像JavaScript)。我如何从Mongoid中删除数据库中的这个属性?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-05 04:35:09

你可以这样做:

代码语言:javascript
运行
复制
Group.collection.update({},
                        {'$unset' => {:groupable_type => 1}},
                        :multi => true)
票数 13
EN

Stack Overflow用户

发布于 2015-10-30 23:38:47

从Mongoid的5.0.0版本开始,gem已经从使用Moped切换到使用‘官方ruby MongoDB驱动程序’,该驱动程序具有不同的更新语法。参考:https://docs.mongodb.org/ecosystem/drivers/ruby/

收集方法的文档在这里:http://api.mongodb.org/ruby/current/Mongo/Collection.html

有两种方法,"update“和"update_many”。您可以使用update_many而不是指定'multi‘选项来更新所有文档。

OPs案例的示例用法:

代码语言:javascript
运行
复制
Group.collection.update_many({}, {'$unset' => {'groupable_type' => true}})

注意:您可以使用点符号取消设置嵌入的文档:

代码语言:javascript
运行
复制
Group.collection.update_many({}, {'$unset' => {'embedded_doc.groupable_type' => true}})

注意: MongoDB不能很好地支持取消设置/更新数组中的字段。有关信息和解决方法,请参阅此帖子:https://jira.mongodb.org/browse/SERVER-1243

票数 4
EN

Stack Overflow用户

发布于 2019-02-26 23:45:15

对于单个实例,可以(至少在Mongoid的最新版本中)在实例上直接使用unset

代码语言:javascript
运行
复制
Group.first.unset('groupable_type')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9144299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档