Я хочу встановити одне зі своїх полів як первинний ключ . Я використовую MongoDB як свій NoSQL.
Відповіді:
_id
поле зарезервовано для первинного ключа в mongodb, і це має бути унікальним значенням. Якщо ви нічого не встановите, _id
він автоматично заповнить його "MongoDB Id Object". Але ви можете додати будь-яку унікальну інформацію в це поле.
Додаткова інформація: http://www.mongodb.org/display/DOCS/BSON
Сподіваюся, це допоможе.
Інший спосіб - створити Indexes
для своєї колекції та переконатися, що вони унікальні.
Більше ви можете знайти за наступним посиланням
Я насправді вважаю це досить простим і простим у реалізації.
У mongodb поле _id зарезервовано для первинного ключа. Mongodb використовує внутрішнє значення ObjectId, якщо ви не визначаєте його у своєму об'єкті, а також створюєте індекс для забезпечення продуктивності.
Але ви можете вказати своє власне унікальне значення для _id, і Mongodb використовуватиме його замість того, щоб робити його для вас. І навіть якщо ви хочете використовувати декілька полів як первинний ключ, ви можете використовувати об'єкт:
{ _id : { a : 1, b: 1} }
Тільки будьте обережні, створюючи ці ідентифікатори, щоб порядок ключів (а і b у прикладі) мав значення, якщо ви поміняєте їх місцями, це вважається іншим об’єктом.
Якщо ви думаєте як СУБД, ви не можете створити первинний ключ. Первинним ключем за замовчуванням є _id. Але ви можете створити унікальний індекс . Приклад наведено нижче.
db.members.createIndex( { "user_id": 1 }, { unique: true } )
db.members.insert({'user_id':1,'name':'nanhe'})
db.members.insert({'name':'kumar'})
db.members.find();
Вихід наведено нижче.
{"_id": ObjectId ("577f9cecd71d71fa1fb6f43a"), "user_id": 1, "name": "nanhe"}
{"_id": ObjectId ("577f9d02d71d71fa1fb6f43b"), "name": "kumar"}
При спробі вставити той самий user_id mongodb видає помилку запису.
db.members.insert({'user_id':1,'name':'aarush'})
WriteResult ({"nInserted": 0, "writeError": {"code": 11000, "errmsg": "Колекція помилок повторюваного ключа E11000: індекс студента.членів: user_id_1 dup ключ: {: 1.0}"}})
Ви можете використовувати прості
db.collectionName.createIndex({urfield:1},{unique:true});
Одним із способів досягнення такої поведінки є встановлення значення значення _id
(яке зарезервовано для первинного ключа в MongoDB) на основі користувацьких полів, які ви хочете розглядати як первинний ключ.
тобто якщо я хочу employee_id
як первинний ключ, то під час створення документа в MongoDB; присвоїти _id
значення таке ж, як і employee_id
.
Це синтаксис створення первинного ключа
db. <collection> .createIndex (<специфікація типу ключа та індексу>, {унікальний: true})
Візьмемо, що в нашій базі даних є колекція з іменем student, а в документі є ключ з іменем student_id, який нам потрібно зробити первинним ключем. Тоді команда повинна бути, як показано нижче.
db.student.createIndex({student_id:1},{unique:true})
Ви можете перевірити, чи встановлено цей ідентифікатор студента як первинний ключ, спробувавши додати повторюване значення до колекції студентів .
віддайте перевагу цьому документу для отримання додаткової інформації https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index
http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
Ви також можете перевірити це посилання та автоматично збільшити _id
поле.
how to set one of my fields as primary key
, наприклад: я хочу user_email як ключ у колекціях користувачів, але як встановити це поле як ключове та унікальне