2011-01-23 2 views
1

это довольно looklike с how to query child objects in mongodbКак запросить дочерние элементы на MongoDB

Я Есть:

Паис (Страна) со своими детьми (ufds (27) на общей), я сделав файл Ruby seed.rb массивной вставкой из файла.

файлы отображения являются:

class Pais 
    include Mongoid::Document 
    field :nome, :type => String 
    field :sigla, :type => String 

    embeds_many :ufds 
    validates_uniqueness_of :sigla 
end 

class Ufd 
    include Mongoid::Document 
    field :codigo_ibge, :type => String 
    field :sigla, :type => String 
    field :nome, :type => String 

    embedded_in :pais, :inverse_of => :ufds 
    embeds_many :cidades 

    validates_uniqueness_of :codigo_ibge, :sigla 
end 

class Cidade 
    include Mongoid::Document 
    field :codigo_ibge, :type => String 
    field :nome, :type => String 

    embedded_in :ufd, :inverse_of => :cidades 
    validates_uniqueness_of :codigo_ibge 
end 

Так при ввозе, я рядом других вещей следующее:

pais_base = Pais.create!(:nome => "Brasil", :sigla => "BR") 

File.open(caminho + 'estados.txt').each_with_index do |linha, index| 
    sigla, nome, ibge = linha.chomp.split("|") 
    pais_base.ufds << Ufd.new(:sigla => sigla, :nome => nome, :codigo_ibge => ibge) 
end 

, правильно создает Паис и его детей UFDS, но теперь, чтобы создать дети UFDS, я загружаю другой файл и пытаюсь найти UFDS с идентификатором (codigo_ibge), но всегда возвращает нуль

File.open(caminho + 'cidades.txt').each_with_index do |linha, index| 
    ufd, ibge, nome = linha.chomp.split("|") 
    uf = pais_base.ufds.find(:first, :conditions => {:codigo_ibge => ufd.to_s }) <<<<< NIL 
    uf.cidades << Cidade.new(:codigo_ibge => ibge.to_s, :nome => nome) 
end 

Как мне это сделать? У меня кончились идеи:/

Заранее спасибо.

ответ

1

Какую версию мангида вы используете?

Я думаю, что вам лучше всего использовать, где

Это сделает ваш запрос

uf = pais_base.ufds.where(:codigo_ibge => ufd.to_s }.first 

находка только действительно используется, когда вы смотрите на идентификатор.

+0

Спасибо, не знал об этом. Есть ли у вас больше ссылок на чтение? –

+0

Ваш лучший выбор - это документы в mongoid и чтение кода, если это не поможет – stellard

Смежные вопросы