这是一个简单的模型。
class Event
include Mongoid::Document
field :name, type: String
field :schedule, type: String
field :description, type: String
field :active, type: Boolean, default: true
key :name
end
1.我们创造和活动
ruby-1.9.2-p0 > event = Event.new(:name => "event1")
=> #<Event _id: event1, _type: nil, _id: "event1", name: "event1", schedule: nil, description: nil, active: true>
ruby-1.9.2-p0 > event.save!
=> true
2.知道让我们找到事件
ruby-1.9.2-p0 > event = Event.find("event1")
=> #<Event _id: event1, _type: nil, _id: "event1", name: "event1", schedule: nil, description: nil, active: true>
3.So 更新事件属性
ruby-1.9.2-p0 > event.update_attributes!(:name => "new name")
=> true
4.让我们尝试查找事件
ruby-1.9.2-p0 > event = Event.find("new name")
Mongoid::Errors::DocumentNotFound: Document not found for class Event with id(s) new name.
5.哎呀找不到,但旧的仍然存在
ruby-1.9.2-p0 > event = Event.find("event1")
=> #<Event _id: event1, _type: nil, _id: "event1", name: "event1", schedule: nil, description: nil, active: true>
我做错了什么?我希望这不是一个错误。
我不相信MongoDB可以让你改变_id
字段。当我使用标准 mongo shell 尝试它时,我收到此错误(这意味着这不是 Mongoid 限制,而是实际 Mongo 软件中的限制):
Mod on _id not allowed
每当需要更改name
字段时,都可能需要:
- 将其复制到具有新名称的新记录。
- 删除旧记录