Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can i change _id field in MongoDB Collection to User_id?

I am new user for MongoDB Database. In MongoDb whatever insert into some collection defaultly one field is added that is _id field.

For Example:

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

It shows

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

I don't need _id field and i want to replace that _id field to User_id with auto increment values. Is it possible. Please help me. Thanks in advance.

like image 381
selvam Avatar asked Nov 14 '13 07:11

selvam


2 Answers

_id field is really special in mongodb. This is your primary key there and there is no way you can have a document without it. Even if you are trying to insert the document without it, mongo will create it for you (as in your example). Moreover, you can not even modify _id field for you collection.

But you can create a document with your own _id. So if you want you can do db.users.insert({"_id":"1","User_Name":"xxx","Address":"yyyy"}) \\why exactly 1 is a string?

and remember that _id means user_id and also keep in mind that this _id should be unique

Keep in mind that mongodb is not like sql. It does not have autoincrement keys (by this I mean that it is not that creators did not know how to do it, but just that you can leave pretty much without it), but you can achieve create something that would resemble the same behaviour.

like image 107
Salvador Dali Avatar answered Sep 20 '22 10:09

Salvador Dali


As for as I can understand your problem is that you want to use your mongoDB internal _id as your custom attribute. For example suppose the db contain the user Identity and having attributes like "_id , name , address ..." and you want to use this _id's value in your application as userId for external reference. So as @SalvadorDali said _id field is really important in the mongoDB and you can not have a document without it. All you can do is let the db store the value by it's default _id but you can access outside using your own User_id by applying these two changes in your json file.

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

now you store any unique value, it is stored in the db using default _id and outside you can have that value in userId field. Correct me if i got your question wrong.

like image 39
Sagar Sharma Avatar answered Sep 18 '22 10:09

Sagar Sharma