2015-11-15 2 views
1

Les colonnes de données sont comme-Pouvons-nous utiliser la clé primaire dans les données (valeurs uniques) comme champ _id de MongoDB? Supposons que j'ai un fichier CSV contenant des données d'étudiants.

  1. Student_ID
  2. nom_etudiant
  3. Adresse

Ici, j'ai Student_ID qui est la clé primaire à savoir unique dans la table. Puis-je utiliser Student_ID comme champ _id dans MongoDB lors de l'importation?

Si oui alors - Comment?

Si non, pourquoi?

+1

Demandez-vous si vous pouvez utiliser le champ 'Student_ID' dans votre document ** à la place ** de' _id'? (En d'autres termes, votre document n'aurait pas de champ '_id', mais plutôt un champ' Student_ID'?) – whyceewhite

+0

Oui, c'est exactement ce que je veux dire. Au lieu d'une autre colonne de valeur unique '_id', Puis-je simplement utiliser ma colonne' Student_ID'? – EngineeredBrain

Répondre

1

Envoyez simplement Student_ID comme valeur à la _id key dans votre commande d'insertion comme:

db.class.insert({’_id’:'Student_ID_value', 'Student_Name':'MyNameHere'}) 
+0

Oui c'est un moyen mais pour cela je dois parcourir tous les enregistrements en CSV et les insérer un par un.Existe-t-il une méthode pour spécifier une telle chose lors de l'utilisation de MongoDBImport? – EngineeredBrain

1

Si vous utilisez mongoimport pour importer votre fichier CSV, vous ne pouvez pas spécifier un chemin dans la commande de remplacement le champ _id avec votre champ Student_ID. Par conséquent, lors de l'importation, MongoDB crée automatiquement un champ _id pour chaque enregistrement et lui assigne un ObjectID unique. Pour les inserts, ce qui est mentionné dans la documentation here:

Si le document ne précise pas un champ _id, puis MongoDB ajoutera le champ _id et attribuer un ObjectId unique pour le document avant encartage. La plupart des pilotes créent un ObjectId et insèrent le champ _id, mais le mongod créera et remplira le _id si le pilote ou l'application ne le fait pas.

Si votre fichier CSV ne pas contiennent un champ déjà _id alors le champ _id sera ajouté à la collection (ainsi que votre Student_ID, nom_etudiant et champs d'adresse) lors de l'importation.


Si vous souhaitez que le champ Student_ID soit le champ _id vous pouvez ensuite renommer la colonne Student_ID dans le fichier CSV à _id puis faire le mongoimport.


Si vous voulez vraiment juste avoir votre champ Student_IDse comportent comme une clé primaire puis envisager de faire un unique index sur le terrain Student_ID. De cette façon, comme une clé primaire, aucune valeur dupliquée ne se produira. Par exemple:

db.<yourcollection>.createIndex({ "Student_ID": 1 }, { unique: true })