0

I'm working on a Spring application and I'm using MongoDB as my database. I have a document structure where I am saving the id of another document to use as a reference. This id is an objectId and then save it using

mongoOperations.save(message)

It is using the same objectId as the one I'm saving for reference to create _id field for this newly created document. So my document is like this

{
   "_id":{
      "$oid":"610a03578c9e4937107b6501"
   },
   "ConversationId":{
      "$oid":"610a03578c9e4937107b6501"
   },
   "Author":"author",
   "Body":"hey there",
   "CreatedAt":{
      "$date":{
         "$numberLong":"1628171556888"
      }
   }
}

As you can see that both the ids for _id and ConversationId are the same. I have tried saving ConversationId as a string and it still does the same. Not sure what mistake I'm making.

{
   "_id":{
      "$oid":"610a03578c9e4937107b6501"
   },
   "ConversationId": "610a03578c9e4937107b6501",
   "Author":"author",
   "Body":"hey there",
   "CreatedAt":{
      "$date":{
         "$numberLong":"1628171556888"
      }
   }
}

This is my model class

@Document(collection = "messages")
public class Message {
    @Id
    private String id;

    @Field("ConversationId")
    private String conversationId;

    @Field("Author")
    private String author;

    @Field("Body")
    private String body;

    @Field("CreatedAt")
    private Instant createdAt;

}

COnversationId in the above model class id an objectId and I tried saving it as a string as mentioned above so It was set to type String here. I have also tried making it ObjectId and still the same issue persists.

How to make it create a unique _id for each record and not use conversationId as its id.

1 Answer 1

1

I think you need to change id to _id. Attaching reference below

@Document(collection = "messages")
public class Message {
    
    private String _id;

    @Field("ConversationId")
    private String conversationId;

    @Field("Author")
    private String author;

    @Field("Body")
    private String body;

    @Field("CreatedAt")
    private Instant createdAt;

}
Sign up to request clarification or add additional context in comments.

1 Comment

No worries @Srikar

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.