Можем ли мы использовать первичный ключ в данных (уникальные значения) как поле _id MongoDB?

Предположим, у меня есть файл CSV, содержащий данные студентов. Столбцы в данных похожи

  1. Студенческий билет
  2. Имя ученика
  3. Адрес

Здесь у меня есть Student_ID, который является первичным ключом, то есть уникальным по всей таблице. Могу ли я использовать Student_ID в качестве поля _id в MongoDB при импорте?

Если да, то как?

Если нет, то почему?

2 ответа

Просто отправь Student_ID как значение для _id key в вашей команде вставки, как:

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

Если вы используете mongoimport для импорта файла CSV, то в команде нельзя указать способ переопределения _id поле с вашим Student_ID поле.

Таким образом, при импорте MongoDB автоматически создаст _id поле для каждой записи и присвойте ей уникальный ObjectID. Для вставок это упомянуто в документации здесь:

Если в документе не указано поле _id, MongoDB добавит поле _id и назначит уникальный ObjectId для документа перед вставкой. Большинство драйверов создают ObjectId и вставляют поле _id, но mongod создает и заполняет _id, если драйвер или приложение этого не делают.

Если ваш CSV-файл не содержит _id поле уже тогда _id поле будет добавлено в коллекцию (вместе с полями Student_ID, Student_Name и Address) после импорта.


Если вы хотите Student_ID поле, чтобы быть _id Затем вы можете переименовать столбец Student_ID в CSV-файле в _id, а затем выполнить mongoimport.


Если вы действительно хотите иметь свой Student_ID поле ведет себя как первичный ключ, тогда рассмотрите возможность создания уникального индекса для поля Student_ID. Таким образом, как и первичный ключ, повторяющихся значений не будет. Например:

db.<yourcollection>.createIndex( { "Student_ID": 1 }, { unique: true } )
Другие вопросы по тегам