将mongo实体保存到不同的集合中

问题描述 投票:1回答:2

我一直在使用Spring Data将实体保存到mongoDB,我的代码目前看起来像这样:

我有一个回购类:

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

这对我来说很有用,但是这种方法仅适用于我希望将Log实体保存到“logs”集合的情况。但是,根据上下文,能够将Log实体保存到不同的集合对我来说非常好。我的意思是在运行时定义集合名称会很好。有可能吗?

谢谢,欢呼

java spring spring-data spring-data-mongodb
2个回答
1
投票

尝试使用继承并以这种方式定义适当的集合名称。可以为您提供保存在不同集合中的可能性,但您仍然无法指定动态集合名称和resp。它们在运行时的数量。


0
投票
@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保存方法,您可以选择要使用的类,并根据类选择适当的集合。

© www.soinside.com 2019 - 2024. All rights reserved.