Как установить первичный ключ в MongoDB? - PullRequest
63 голосов
/ 21 июля 2010

Я хочу установить одно из моих полей в качестве первичного ключа . Я использую MongoDB в качестве NoSQL.

Ответы [ 8 ]

74 голосов
/ 21 июля 2010
Поле

_id зарезервировано для первичного ключа в mongodb, и это должно быть уникальным значением. Если вы ничего не установите на _id, он автоматически заполнит его «MongoDB Id Object». Но вы можете поместить любую уникальную информацию в это поле.

Дополнительная информация: http://www.mongodb.org/display/DOCS/BSON

Надеюсь, это поможет.

17 голосов
/ 18 декабря 2015

Другой способ - создать Indexes для вашей коллекции и убедиться, что они уникальны.

Более подробную информацию можно найти по следующей ссылке

Iна самом деле это довольно просто и легко реализовать.

13 голосов
/ 22 января 2016

В mongodb _id поле зарезервировано для первичного ключа. Mongodb использует внутреннее значение ObjectId, если вы не определяете его в своем объекте, а также создаете индекс для обеспечения производительности.

Но вы можете указать свое собственное уникальное значение для _id, и Mongodb будет использовать его вместо того, чтобы создавать одно для вас. И даже если вы хотите использовать несколько полей в качестве первичного ключа, вы можете использовать объект:

{ _id : { a : 1, b: 1} }

Просто будьте осторожны при создании этих идентификаторов, чтобы порядок ключей (a и b в примере) имел значение, если вы меняете их местами, это считается другим объектом.

7 голосов
/ 12 июля 2016

Если вы думаете, как СУБД, вы не можете создать первичный ключ, первичный ключ по умолчанию - _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"}

При попытке вставить ту же ошибку записи mrowodb user_id.

db.members.insert({'user_id':1,'name':'aarush'})

WriteResult ({"nInserted": 0, "writeError": {"code": 11000, "errmsg": "Коллекция ошибок дублированного ключа E11000: student.members index: user_id_1 dup key: {: 1.0}"}})

5 голосов
/ 20 июля 2016

Простой вы можете использовать db.collectionName.createIndex({urfield:1},{unique:true});

3 голосов
/ 06 августа 2015

Одним из способов достижения этого поведения является установка значения в поле _id (которое зарезервировано для первичного ключа в MongoDB) на основе пользовательских полей, которые вы хотите использовать в качестве первичного ключа.
т.е. если я хочу employee_id в качестве первичного ключа, то во время создания документа в MongoDB; присвойте _id значение, аналогичное employee_id.

2 голосов
/ 20 августа 2013

http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/

Вы также можете проверить эту ссылку и автоматически увеличить поле _id.

1 голос
/ 16 июня 2017

Это синтаксис создания первичного ключа

db. .createIndex (<спецификация типа ключа и индекса>, { уникальный: true})

Давайте предположим, что в нашей базе данных есть коллекция с именем student , а в ее документе есть ключ с именем student_id , который нам нужен для создания первичного ключа. Тогда команда должна быть такой, как показано ниже.

db.student.createIndex({student_id:1},{unique:true})

Вы можете проверить, установлен ли этот student_id в качестве первичного ключа, попытавшись добавить повторяющееся значение в коллекцию student .

предпочитаю этот документ для дальнейшей информации https://docs.mongodb.com/manual/core/index-unique/#create-a-unique-index

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...