Монгоидная странность - PullRequest
       3

Монгоидная странность

1 голос
/ 31 августа 2011

Я уверен, что это просто очень простая концепция MongoDB, которую я не понимаю, но это сводит меня с ума.

В моем приложении Rails 3.1 есть 2 действительно простые модели Mongoid

class Box
  include Mongoid::Document
  field :name, :type => String
  embeds_many :things
end

class Thing
  include Mongoid::Document
  field :name, :type => String
  embedded_in :box
end

Я создаю 2 коробки

Box.create :name => "Big"
=> #<Box _id: 4e5e5c051c3a2b2efc00009d, _type: nil, name: "Big">

Box.create :name => "Small"
=> #<Box _id: 4e5e5c251c3a2b2efc00009e, _type: nil, name: "Small">

Первая странная вещь, которую я заметил, это

Box.all.count
=> 2

Box.all.collect &:name
=> ["Big", "Small"]

Box.all.first
=> #<Box _id: 4e5e5c051c3a2b2efc00009d, _type: nil, name: "Big">

Box.all.last
=> #<Box _id: 4e5e5c051c3a2b2efc00009d, _type: nil, name: "Big">

first и last одинаковы? Что за ...?

Следующая странная вещь происходит, когда я добавляю вещи в коробку

my_box = Box.find "4e5e5c051c3a2b2efc00009d"
=> #<Box _id: 4e5e5c051c3a2b2efc00009d, _type: nil, name: "Big">

my_box.things.create :name => "Stuff"
=> #<Thing _id: 4e5e5ee11c3a2b2efc00009f, _type: nil, name: "Stuff">

my_box.things.all.count
=> 1

# ... add a bunch of other things

my_box.things.all.count
=> 5

my_box.things.create :name => "Stuff"
=> #<Thing _id: 4e5e5eeb1c3a2b2efc0000a4, _type: nil, name: "Stuff">

my_box.things.all.count
=> 2

Вау! Моя база данных только что потеряла кучу вещей?

Что здесь происходит? Это ожидаемое поведение?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Спасибо за ваши предложения всем.

Это, очевидно, был ужасный побочный эффект от использования Mongoid с Rails 3.1.Работает как прелесть с Rails 3.0.

Для записей: не пытайтесь использовать Mongoid 2.2.0 с Rails 3.1.

0 голосов
/ 31 августа 2011

Вы можете попробовать следовать

class Box
  include Mongoid::Document
  field :name, :type => String
  references_many :things
end

class Thing
  include Mongoid::Document
  field :name, :type => String
  referenced_in :box
end
...