Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-3811

id is being replaced by _id, of the inner object, when updating data of MongoDB using Java Driver

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major - P3 Major - P3
    • None
    • None
    • BSON
    • None

    Description

      I'm trying to update an object of MongoDB. I'm using Java Driver (Sync).

      After a 'create' operation, the data is persisted as follows:

       

      {
          "_id" : ObjectId("5f2b7deb62798d1045a47313"),
          "name" : "John",
          "other_info" : {
              "images" : {
                  "images" : [ 
                      {
                          "id" : "1",
                          "imgType" : "IDBACKIMAGE"
                      }, 
                      {
                          "id" : "2",
                          "imgType" : "SIGCARDIMAGE"
                      }
                  ]
              },
          },
          "status" : "PENDING"
      }

      Now, I want to modify the 'id' parameter of the images array. So I update the data using getCollection().updateOne(filterCondition, combine(updateData)), but it is persisted as below:

       

      {
          "_id" : ObjectId("5f2b7deb62798d1045a47313"),
          "name" : "John",
          "other_info" : {
              "images" : {
                  "images" : [ 
                      {
                          "_id" : "3",
                          "imgType" : "IDBACKIMAGE"
                      }, 
                      {
                          "_id" : "4",
                          "imgType" : "SIGCARDIMAGE"
                      }
                  ]
              },
          },
          "status" : "PENDING"
      }

      As you can see in the updated data, the 'id' property of the images array is now '_id' after update operation. I had provided the JSON with 'id' field but somehow the Mongo Client considered 'id' as '_id' and persisted '_id'. This happens when replaceOne() is used too. This doesn't happen with the create operation as you can see above. Is this an expected behavior when update operation is done? Why is MongoDB treating 'id' and '_id' as same?

      Attachments

        Activity

          People

            Unassigned Unassigned
            shrestha.akash01@gmail.com Akash Shrestha
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: