2011-08-19 2 views
1

Je dois insérer en bloc la série de documents incorporés dans un document existant. J'ai essayé le code ci-dessous, mais il ne fonctionnait pasIncorporation de documents directement dans des documents avec mongoid

arr_loc = [] 
arr_loc << Location.new(:name=> "test") << Location.new(:name=> "test2") 
biz = Business.first 
biz.locations = arr_loc 
biz.save # not working 

je suis actuellement l'insertion de chaque document séparément en bouclant le tableau, je l'espère, il est un moyen plus propre de le faire.

de shell mongo, nous pouvons facilement le faire comme ça

> var mongo = db.things.findOne({name:"mongo"}); 
> print(tojson(mongo)); 
{"_id" : "497da93d4ee47b3a675d2d9b" , "name" : "mongo", "type" : "database"} 
> mongo.data = { a:1, b:2}; 
{"a" : 1 , "b" : 2} 
> db.things.save(mongo); 
> db.things.findOne({name:"mongo"}); 
{"_id" : "497da93d4ee47b3a675d2d9b" , "name" : "mongo" , "type" : "database", "data" : {"a" : 1 , "b" : 2}} 
> 

vérifier la link pour plus d'info .. est-il possible de le faire avec MongoId?

Répondre

0

Il se révèle être un problème pour appeler méthode de sauvegarde après la cession

biz.locations = arr_loc #this is fine 
biz.save # no need for that 

MongoId met à jour le document sur la cession elle-même, sans sauvegarde explicite nécessaire. Reportez-vous à mongoid google group thread (Thanks Nick hoffman) pour plus d'informations

Questions connexes