【发布时间】: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