2010-10-30 21 views
15

Otrzymuję wiele podobnych obiektów JSON ze strony zdalnej i staram się przechowywać je na lokalnym MongoDB.Szyny: Przechowuj JSON w MongoDB

Jaki byłby najlepszy sposób na zrobienie tego? (Najlepiej poprzez Mongoid lub Mongo-Mapper klejnotów)

Dzięki

Odpowiedz

23

Można użyć pola mongoidowego typu Hash lub osadzonego dokumentu.

class MyModel 
    include Mongoid::Document 
    field :some_data, :type => Hash 
end 
+0

Najnowsze wersje: pole: some_data, wpisz: Hash –

12

Jeśli chcesz tylko przechowywać JSON w Mongo nie trzeba Mongoid lub MongoMapper. Wystarczy skorzystać z Mongo-ruby-kierowcy

require 'mongo' 

db = Mongo::Connection.new.db('sample-db') 
coll = db.collection('test') 
coll.insert(ActiveSupport::JSON.decode(you_json)) 

Z tym można przechowywać w bazie danych próbki-db w teście gromadzenia

1

Okazało się, można po prostu umieścić dane bezpośrednio do mongoid bez definiowania pola:

SomeMongoidObject['dynamic_attribute'] = json_data

+0

Przyjemne obejście, ale nadal chciałbym, aby mongoid wspierał pola JSON jako opcję. – mydoghasworms

+0

Zalogowałem to jako problem na GitHub: https://github.com/mongoid/mongoid/issues/1603 – mydoghasworms

+0

Masz opinię na temat problemu. Najwyraźniej możesz po prostu użyć skrótu typu pola lub osadzonego dokumentu. Przedstawiłem tutaj odpowiedź jako taką. – mydoghasworms