2011-07-26 2 views
1

J'ai une structure de données hiérarchique présentant des réponses à chaque question pour chaque examen pour chaque enseignant stocké dans MongoDB comme ci-dessous:

db.foo.insert({name:"teacher1"}); //Done 

db.foo.update({name:"teacher1"},{$push:{"exams":{name:"exam1"}}}); //Done 

db.foo.update({"exams.name":"exam1"},{$push:{"exams.$.questions":{name:"question1"}}}); //Done 

db.foo.update({"exams.questions.name":"question1"}, 
    {$push:{"exams.$.questions.$.answers":{name:"answer1"}}}); 

// Error => can't append to array using string field name [$] 

Je vous remercie de vos commentaires,

Répondre

2

Vous ne pouvez pas utiliser deux opérateurs positionnels. Comme indiqué dans: http: //www.mongodb.org/display/DOCS/Updating:

L'opérateur $ (en lui-même) signifie "position de l'élément de tableau correspondant dans la requête". Utilisez ceci pour trouver un membre du tableau, puis manipulez-le.

Actuellement, l'opérateur $ s'applique uniquement au premier élément correspondant dans la requête.

Questions connexes