2011-10-20 6 views
1

J'essaie d'intégrer un document dans un document existant à l'aide du pilote Ruby.Incorporation de documents dans des documents existants avec le pilote Ruby pour MongoDB

Voici ce que mon principal document ressemble à:

db = Mongo::Connection.new.db("Portfolios") 
project_collection = db.collection("Projects") 
new_Project = { :url => 'http://www.tekfolio.me/billy/portfolio/focus', :author => 'Billy'} 
project_collection.insert(new_Project) 

Après que je l'ai créé mon new_project et ajouté à mon project_collection je ou non ajouter une nouvelle collection au même document actif appelé plus tard. C'est là que je suis coincé. Le code suivant ne semble pas faire quoi que ce soit:

new_asset = { :image_url => 'http://assets.tekfolio.me/portfolios/68fbb25a-8353-41a8-a779-4bd9762b00f2/projects/13/assets/20/focus2.PNG'} 
new_Project.assest.insert(new_asset) 

Je suis certain que j'ai massacré ma compréhension de MongoDB et le pilote Ruby et le concept de documents et embeded apprécierait votre aide me sortir de cette humide sac de papier, je ne peux pas sembler sortir;)

Répondre

1

Avez-vous essayé de placer juste la valeur de l'actif sans insertion et au lieu d'utiliser la mise à jour?

new_Project["asset"] = new_asset 
project_collection.update({"_id" => new_Project["_id"]}, new_Project) 
+0

Que diriez-vous de me brancher avec une approbation? – allingeek

1

Je pense, que vous essayez de « mettre à jour » le record new_project à l'actif

cela ne fonctionne pas parce que vous mettez à jour uniquement le hachage en ruby, pas en mongo, vous devez d'abord obtenir la référence à l'objet dans mongo, le mettre à jour, puis l'enregistrer, vérifier cette information:

http://www.mongodb.org/display/DOCS/Updating+Data+in+Mongo

(si vous pouvez, vous pouvez affecter l'actif avant d'insérer, et cela devrait fonctionner)

Questions connexes