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

23,767

Solution 1

_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.

Solution 2

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.

Share:
23,767
selvam
Author by

selvam

Updated on August 02, 2020

Comments

  • selvam
    selvam almost 4 years

    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.