2014-04-23 8 views
2

Je suis nouveau à MongoDB, mais je regarde pour résoudre ce problème:Comment stocker des champs dynamiques dans DB Mongo

Mon application a un générateur de formulaire dynamique qui permet aux utilisateurs d'ajouter des champs dynamiques sur le formulaire. Aucun champ du formulaire n'est fixe ou statique.

L'utilisateur peut ajouter n'importe quel nombre et n'importe quel type de champs comme le champ de texte, la liste déroulante ou les champs de date sur le formulaire et enregistrer le formulaire.

Je crois que depuis son stockage dynamique et les champs ne sont pas statiques, Oracle DB ne travaillera pas pour le stockage. Can Mongo DB peut-il être utilisé pour un tel stockage et pour récupérer les données? Comment les données sont stockées dans Mongo DB et récupérées pour afficher le formulaire.

Merci d'avance!

Répondre

1

MongoDb est une base de données basée sur un document, comme vous l'avez mentionné, elle n'a aucune restriction de colonne ou de champ. Vous pouvez placer votre champ dynamique dans un objet et l'enregistrer dans la même collection.

par exemple

Person: { 
    name: '', 
    Contacts: [ contact 1, contact 2] 
} 

vous pouvez ajouter plusieurs champs aussi par exemple, vous pouvez ajouter un courriel à ce

Person: 
{ name: '', contacts: [], email: ''} 

Vous pouvez maintenant enregistrer que personne Collection ainsi. Utilisez simplement l'objet javascript et ajoutez la nouvelle clé et la valeur et enregistrez-la.

person.email = 'new value'; 

Lorsque ceux que vous pouvez Récupérer itérer clés sur les objets et afficher à nouveau les valeurs à la fin avant

for (var key in person) { 
    // do something with key 
} 
1

Oui, MongoDB peut le faire. Un document pour représenter une telle forme pourrait ressembler à ceci:

{ 
    tile: "A simple customer survey", 
    creator: "Philipp", 
    created: ISODate("2014-04-24T16:59:42.389Z"), 
    questions: [ 
     { 
      question: "How old are you?", 
      input: "number" 
     }, 
     { 
      question: "Do you like our products?", 
      answers: [ 
       "Yes", 
       "No", 
       "Maybe" 
      ] 
     }, 
     { 
      question: "Which aspects of our products do you like?", 
      multiple: true, 
      answers: [ 
       "color", 
       "shape", 
       "material", 
       "price", 
       "does not explode often" 
      ] 
     } 
    ] 
} 

Notez que les entrées de la « question » tableau ont tous une combinaison différente de champs. La gestion de ce problème n'est pas du tout un problème pour MongoDB, car il n'applique pas de schéma cohérent pour les documents d'une collection.

Questions connexes