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

时间:2016-05-04 07:38:50

标签: java spring spring-data spring-data-mongodb

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

我有一个回购课程:

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实体保存到不同的集合对我来说非常好。我的意思是在运行时定义集合名称会很好。有可能吗?

谢谢,欢呼

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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保存方法,您可以选择要使用的类以及 根据类,它将选择适当的集合。