【问题标题】:Spring boot mongodb not saving uniqueIdSpring Boot mongodb不保存uniqueId
【发布时间】:2021-10-10 13:19:48
【问题描述】:

我正在开发一个 Spring 应用程序,并且我使用 MongoDB 作为我的数据库。我有一个文档结构,我在其中保存另一个文档的 ID 以用作参考。这个id是一个objectId,然后用

保存
mongoOperations.save(message)

它使用的objectId 与我保存的objectId 相同,以供参考,以便为这个新创建的文档创建_id 字段。所以我的文档是这样的

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

如您所见,_id 和 ConversationId 的 id 相同。我尝试将 ConversationId 保存为字符串,但它仍然是一样的。不知道我犯了什么错误。

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

这是我的模型类

@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;

}

上述模型类 id 中的 COnversationId 是一个 objectId,我尝试将其保存为如上所述的字符串,因此在此处将其设置为 String 类型。我也尝试将其设为 ObjectId,但同样的问题仍然存在。

如何让它为每条记录创建一个唯一的_id,而不是使用conversationId作为它的id。

【问题讨论】:

    标签: java mongodb spring-boot


    【解决方案1】:

    我认为您需要将 id 更改为 _id。下面附上参考资料

    @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;
    
    }
    

    【讨论】:

    • 不用担心@Srikar
    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2016-12-13
    • 2020-02-03
    • 1970-01-01
    相关资源
    最近更新 更多