2010-07-21 2 views

ответ

66

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

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

Надежда это помогает.

+32

Это действительно не отвечает на 'как установить один из моих полей как первичный key', например: я хочу USER_EMAIL как ключ в коллекции пользователя, но как установить, что поле как ключевое и уникальное –

1

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

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

+13

Обратите внимание, что [ссылки только ответы] (http://meta.stackoverflow.com/tags/link-only-answers/info) обескуражены, ответы SO должны быть конечной точкой поиска решение (по сравнению с еще одной остановкой ссылок, которые со временем становятся устаревшими). Пожалуйста, подумайте о добавлении отдельного резюме здесь, сохранив ссылку в качестве ссылки. – kleopatra

+1

Ссылка теперь сломана, поэтому этот ответ бесполезен – PeterM

1

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

14

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

Вы можете найти больше на следующем link

Я на самом деле найти это довольно просто и легко осуществить.

+2

«Уникальное ограничение на индексы гарантирует, что только один документ может иметь значение для поля в коллекции. Для ошелоченных коллекций эти уникальные индексы не могут обеспечить уникальность, поскольку операции вставки и индексирования являются локальными для каждого осколка "--https: //docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/ – JohnC

8

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

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

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

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

3

Если вы думаете, что СУБД вы не можете создать первичный ключ, основным ключом по умолчанию является _id. Но вы можете создать Unique Index. Пример ниже.

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"), "идентификатор_пользователя": 1, "название": "Nanhe"}

{ "_id": ObjectId, "название" ("577f9d02d71d71fa1fb6f43b"): "kumar"}

При попытке вставить одну и ту же ошибку записи пиктограммы user_id mongodb.

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

WriteResult ({ "nInserted": 0, "WriteError": { "код": 11000, "ErrMsg": «E11000 дубликат ключей ошибки: индекс student.members: user_id_1 DUP ключ : {: 1,0}» } })

4

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

2

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

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

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

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

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

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