2010-10-30 21 views
15

Je reçois plusieurs objets JSON similaires à partir d'un site distant et cherche à les stocker dans un MongoDB local.Rails: Magasin JSON dans MongoDB

Quelle serait la meilleure façon de faire cela? (De préférence par MongoId ou de pierres précieuses Mongo-Mapper)

Merci

Répondre

23

Vous pouvez utiliser un champ mongoïde de type Hash ou un document incorporé.

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

Pour les dernières versions: field: some_data, tapez: Hash –

12

Si vous voulez juste stocker votre JSON à Mongo vous n'avez pas besoin MongoId ou MongoMapper. Il suffit d'utiliser le Mongo-ruby-pilote

require 'mongo' 

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

Avec que vous stockez dans la base de données échantillon-db dans le test de collecte

1

a découvert que je peux mettre les données directement dans MongoId sans définir les champs:

+0

Belle solution de contournement, mais j'aimerais toujours que mongoid prenne en charge les champs JSON en option. – mydoghasworms

+0

Je l'ai enregistré comme un problème sur GitHub: https://github.com/mongoid/mongoid/issues/1603 – mydoghasworms

+0

Nous avons eu des commentaires sur le problème. Apparemment, vous pouvez simplement utiliser le type de champ Hash ou un document incorporé. Ont posté une réponse en tant que telle ici. – mydoghasworms