J'ai un document «propriétaire» qui peut avoir «n» nombre de camps et les camps ont des «instructeurs» et les instructeurs ont des «cours». Plus tôt, j'ai essayé de l'accomplir avec des tableaux imbriqués (voir le lien vers ma publication ci-dessous), mais j'ai appris que l'opérateur positionnel "$" ne niche pas en profondeur. MongoDB: Ajout d'un tableau dans un tableau existant
Cependant, j'ai appris que la solution serait d'utiliser des collections d'objets plutôt que des tableaux. Je suppose que je dois utiliser "mise à jour" avec "$ set" pour ajouter des "camps" supplémentaires, mais chaque fois que je fais tout ce qu'il fait, c'est écraser (mettre à jour) le camp précédent qui a été inséré.
Voici la structure hiérarchique que j'essaie d'accomplir:
owner = { firstName: 'john', lastName: 'smith', ownerEmail: '[email protected]', camps : { { name: 'cubs-killeen', location: 'killeen' }, { name: 'cubs-temple', location: 'temple' }, instructors : { { firstName: 'joe', lastName : 'black' }, { firstName: 'will', lastName : 'smith' } } } }
J'ai également essayé ce qui suit:
db.owners.update({ownerEmail:'[email protected]'}, {$set: { camps:{ {name:'cubs-killeen'} } }})
Mais cela jette un identifiant inattendu {erreur.
Toute aide concernant certains exemples de commandes mongo pour réaliser la structure ci-dessus serait très appréciée.
V / R
Chris
Comme autre mentionné, la structure que vous voulez n'est pas valide. Je recommande la structure suivante pour le document de votre propriétaire:
{ "_id" : ObjectId("51c9cf2b206dfb73d666ae07"), "firstName" : "john", "lastName" : "smith", "ownerEmail" : "[email protected]", "camps" : [ { "name" : "cubs-killeen", "location" : "killeen" }, { "name" : "cubs-temple", "location" : "temple" } ], "instructors" : [ { "firstName" : "joe", "lastName" : "black" }, { "firstName" : "will", "lastName" : "smith" } ] }
et alors
db.stack.update( { ownerEmail: "[email protected]" }, { $push: { camps: { name: "cubs-killeen", location: "some other Place" } } } );
Cela étant, vous pouvez ajouter des camps comme ceci:
J'espère que cela aide.