2013-11-14 6 views
4

Я новый пользователь для базы данных MongoDB. В MongoDb независимо от вставки в какую-либо коллекцию по умолчанию добавляется одно поле, которое является полем _id.Как изменить поле _id в коллекции MongoDB на User_id?

Для примера:

db.users.insert({"User_id":"1","User_Name":"xxx","Address":"yyyy"}) 
db.users.find() 

Это показывает

{ "_id" : ObjectId("528475fc326b403f580d2eba"), "User_id" : "1", "User_Name" : "xxx",Address" : "yyyy" } 

мне не нужно поле _id и я хочу, чтобы заменить это поле _id к user_id со значениями автоматического приращения. Возможно ли это. Пожалуйста, помогите мне. Заранее спасибо.

+0

Если вы нашли ответ полезным, вы можете его перенести/принять. –

ответ

10

_id Поле действительно special in mongodb. Это ваш первичный ключ, и вы не можете иметь документ без него. Даже если вы пытаетесь вставить документ без него, mongo создаст его для вас (как в вашем примере). Более того, вы не можете даже изменить поле _id для вашей коллекции.

Но вы можете создать документ с помощью своего собственного _id. Так что если вы хотите, вы можете сделать db.users.insert({"_id":"1","User_Name":"xxx","Address":"yyyy"}) \\why exactly 1 is a string?

и помните, что _id означает user_id, а также иметь в виду, что это _id должно быть уникальным

Имейте в виду, что MongoDB не нравится SQL. У него нет ключей автоинкремента (я имею в виду, что это не то, что создатели не знали, как это сделать, а просто, что вы можете оставить его без него), но вы можете добиться создания чего-то, что будет напоминать the same behaviour.

0

Как я понимаю, ваша проблема заключается в том, что вы хотите использовать свой внутренний _id mongoDB как свой собственный атрибут. Например, предположим, что db содержит идентификатор пользователя и имеет такие атрибуты, как «_id, name, address ...», и вы хотите использовать это значение _id в своем приложении как userId для внешней ссылки. Так как @SalvadorDali сказал, что поле _id действительно важно в mongoDB, и у вас нет документа без него. Все, что вы можете сделать, это позволить db хранить значение по умолчанию _id, но вы можете получить доступ к нему с помощью собственного User_id, применив эти два изменения в вашем json-файле.

"properties": { 
    "userId":{ 
     "type": "string", 
     "id":"true", 
     "index":"true", 
     "description": "unique id of identity" 
    } 
} 

теперь вы хранить любое уникальное значение, она хранится в БД, используя по умолчанию _id и снаружи вы можете иметь это значение в поле USERID. Исправьте меня, если я ошибаюсь.

Смежные вопросы