gpt4 book ai didi

java - 如何在 Spring Data MongoDB 中动态创建集合?

转载 作者:行者123 更新时间:2023-12-01 16:38:32 40 4
gpt4 key购买 nike

如何在 Spring Boot 中创建基于月份的动态集合?根据月份,我需要创建一个单独的集合,但具有相同的模型属性。

最佳答案

您可以使用提供的月份名称和 JSON 架构验证动态创建集合。例如,使用 Spring Data MongoDB v2.2.7 的 MongoTemplate API,以下代码在 test 数据库中创建一个名为 myCollection_jun_2020 的集合。

MongoJsonSchema 应用规则来创建具有特定属性的文档;这些在架构中指定。如果不遵守规则,文档插入就会失败。在示例中,可以插入以下文档:

{ "_id" : 1, "firstname" : "luke", "lastname" : "skywalker", "address" : { "postCode" : "99901" } }

并且,以下情况不能:

{ "_id" : 1, "firstname" : "leya", "lastname" : "skywalker", "address" : { "postCode" : "99901" } }

代码:

MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "test");
String month = "jun_2020";
String collectionName = "myCollection_" + month;
MongoCollection<Document> coll = mongoOps.createCollection(collectionName, getSchemaOption());
System.out.println(coll.getNamespace()); // prints test.myCollection_jun_2020

// Method returns the collection option object with schema validation.
private static CollectionOptions getSchemaOption() {
MongoJsonSchema schema = MongoJsonSchema.builder()
.required("firstname", "lastname")
.properties(
string("firstname")
.possibleValues("luke", "han"),
object("address")
.properties(string("postCode")
.minLength(4).maxLength(5))
).build();
CollectionOptions options = CollectionOptions.empty().schema(schema);
return options;
}

关于java - 如何在 Spring Data MongoDB 中动态创建集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61909755/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com