Можем ли мы использовать первичный ключ в данных (уникальные значения) как поле _id MongoDB?
Предположим, у меня есть файл CSV, содержащий данные студентов. Столбцы в данных похожи
- Студенческий билет
- Имя ученика
- Адрес
Здесь у меня есть 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 } )