Tag: mongoid4

mongodb mongoid-rails无法在嵌入文档的散列中增加计数器

我使用的是Mongoid 4.0.2,Rails 4.2.1和Mongodb 2.4.8。 我将daily_events作为人员集合中的嵌入文档,如下所示。 class Person include Mongoid::Document field :email, type: String field :month, type: Date field :monthly_total, type: Hash, default: {:email_open => 0, :email_click => 0, :page_view => 0} embeds_many :daily_events end class DailyEvent include Mongoid::Document field :name, type: String field :day_1, type: Hash, default: -> {:email_open => 0, :email_click => 0, :page_view […]

设置mongoid哈希字段值

我在Rails项目中使用Mongoid(均为4.0.x),并且我有一个带有哈希字段的文档,该字段存储了一些无模式数据。 class Thing field :name, type: String field :mass, type: Integer field :info, type: Hash end 通过这种设置,我可以查询具有密钥的东西:endDate如下所示: Thing.where(“info.endDate”=>{‘$exists’=>true}) 这一切都很好用。 为此使用哈希字段:info字段很好,因为我想要存储的内容没有固定的模式,因而不同。 好的,但是,我不能在:info hash中使用相同的点语法来$set键/值对。 [1] thing.set(“info.endDate”=>Time.now) 引发Mongoid::Errors::UnknownAttribute错误。 它告诉我,我必须在我的模型中包含Mongoid::Attributes::Dynamic才能做到这一点,但这对我来说似乎不对。 哈希字段类型的要点似乎是允许您处理没有固定模式的数据。 看起来我不应该包含一个特殊的“动态属性”模块来使用哈希字段。 所以现在,我正在使用常规的旧[]语法更新值,然后在模型上调用save ,如下所示: thing.info[:endDate] = Time.now thing.save 但是很多时候它只是$set值会更好。 是否有其他语法来设置哈希字段值? 我错误的上述错误消息和动态属性是错误的? 我暂时不想对哈希字段进行两步更新吗? [1]诚然,我最近从mongomapper迁移过来,所以我对这种语法的期望部分是由于能够在mongomapper中做到这一点。