将 mongo 个实体保存到不同的集合
save mongo entity to the different collections
我一直在使用 Spring 数据将实体保存到 mongo 数据库,目前我的代码如下所示:
我有一个回购 class:
public interface LogRepo extends MongoRepository<Log, String> {
}
我有一个如下所示的实体日志:
@Document(
collection = "logs"
)
public class Log {
@Id
private String id;
private String jsonMessage;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getJsonMessage() {
return jsonMessage;
}
public void setJsonMessage(String jsonMessage) {
this.jsonMessage = jsonMessage;
}
}
这对我来说效果很好,但是这种方法仅适用于我想将日志实体保存到 "logs" 集合的情况。但是,如果我能够根据上下文将 Log 实体保存到不同的集合中,那将是非常好的。我的意思是在运行时定义集合名称会很好。有可能吗?
谢谢,干杯
尝试使用继承并以这种方式定义适当的集合名称。可能会让您有可能保存在不同的集合中,但您仍然无法动态指定集合名称和 resp。它们在运行时的数量。
@Document(
collection = "logs"
)
public class Log {
@Id
private String id;
private String jsonMessage;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getJsonMessage() {
return jsonMessage;
}
public void setJsonMessage(String jsonMessage) {
this.jsonMessage = jsonMessage;
}
}
@Document(
collection = "log_child"
)
public class LogChild extends Log{}
使用 MongoOperations 保存方法,您可以选择要使用的 class
根据 class 它会选择合适的集合。
@Document(collection = "collection_#{T(com.github.your_project.DBUtils).getCollectionName()}")
public Class Collection
您可以使用静态 getter
实时更改名称
@UtilityClass
public class DBUtils {
private String collectionName;
public String getCollectionName() {
return collectionName;
}
public void setCollectionName(String collectionName) {
DBUtils.collectionName = collectionName;
}
}
我一直在使用 Spring 数据将实体保存到 mongo 数据库,目前我的代码如下所示:
我有一个回购 class:
public interface LogRepo extends MongoRepository<Log, String> {
}
我有一个如下所示的实体日志:
@Document(
collection = "logs"
)
public class Log {
@Id
private String id;
private String jsonMessage;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getJsonMessage() {
return jsonMessage;
}
public void setJsonMessage(String jsonMessage) {
this.jsonMessage = jsonMessage;
}
}
这对我来说效果很好,但是这种方法仅适用于我想将日志实体保存到 "logs" 集合的情况。但是,如果我能够根据上下文将 Log 实体保存到不同的集合中,那将是非常好的。我的意思是在运行时定义集合名称会很好。有可能吗?
谢谢,干杯
尝试使用继承并以这种方式定义适当的集合名称。可能会让您有可能保存在不同的集合中,但您仍然无法动态指定集合名称和 resp。它们在运行时的数量。
@Document(
collection = "logs"
)
public class Log {
@Id
private String id;
private String jsonMessage;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getJsonMessage() {
return jsonMessage;
}
public void setJsonMessage(String jsonMessage) {
this.jsonMessage = jsonMessage;
}
}
@Document(
collection = "log_child"
)
public class LogChild extends Log{}
使用 MongoOperations 保存方法,您可以选择要使用的 class 根据 class 它会选择合适的集合。
@Document(collection = "collection_#{T(com.github.your_project.DBUtils).getCollectionName()}")
public Class Collection
您可以使用静态 getter
实时更改名称@UtilityClass
public class DBUtils {
private String collectionName;
public String getCollectionName() {
return collectionName;
}
public void setCollectionName(String collectionName) {
DBUtils.collectionName = collectionName;
}
}