@Document не создает коллекцию в приложении весенней загрузки

У меня есть простое приложение для отдыха на пружине. Попытка создать коллекцию с использованием аннотации @Document в Spring data mongo db. Я знаю, что Spring framework создает коллекцию, если документ обозначен аннотацией @Document.

Организация

@Document("User")
public class User {
    @Id
    private String Id;
    @Field("firstName")
    @TextIndexed
    private String firstName;
    @Field("lastName")
    @TextIndexed
    private String lastName;
    private String address;

    public String getId() {
        return Id;
    }

    public void setId(String id) {
        Id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

характеристики

spring.data.mongodb.uri=mongodb://localhost:27017/Order

Однако в остальном контроллере он создает коллекцию по команде вставки, но, тем не менее, он не создает текстовый индекс при вставке.

@RestController
public class Controller {
    private MongoTemplate mongoTemplate;

    public Controller(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

    @GetMapping("/get")
    public String Get(){
        mongoTemplate.insert(new User());
        return "HelloWorld";
    }
}

Также нет ошибок в консоли

Консоль

2020-09-03 12:52:00.657  INFO 865 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication on macbooks-MacBook-Air.local with PID 865 (/Users/macbook/Projects/Fete/demo/build/classes/java/main started by macbook in /Users/macbook/Projects/Fete/demo)
2020-09-03 12:52:00.662  INFO 865 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2020-09-03 12:52:02.676  INFO 865 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data MongoDB repositories in DEFAULT mode.
2020-09-03 12:52:02.712  INFO 865 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 22ms. Found 0 MongoDB repository interfaces.
2020-09-03 12:52:04.106  INFO 865 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2020-09-03 12:52:04.136  INFO 865 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-09-03 12:52:04.137  INFO 865 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.37]
2020-09-03 12:52:04.269  INFO 865 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-09-03 12:52:04.270  INFO 865 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3500 ms
2020-09-03 12:52:04.558  INFO 865 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}
2020-09-03 12:52:04.692  INFO 865 --- [localhost:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1, serverValue:9}] to localhost:27017
2020-09-03 12:52:04.731  INFO 865 --- [localhost:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=8577619}
2020-09-03 12:52:06.165  INFO 865 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-09-03 12:52:06.746  INFO 865 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-09-03 12:52:06.764  INFO 865 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 6.69 seconds (JVM running for 13.238)

Репозиторий кода

https://github.com/anandjaisy/mongoDBSpringBoot

person San Jaisy    schedule 02.09.2020    source источник
comment
у вас возникла ошибка?   -  person varman    schedule 02.09.2020
comment
Нет, у меня нет ошибок   -  person San Jaisy    schedule 02.09.2020
comment
Как вы позвонили mongoTemplate.insert(new User());   -  person varman    schedule 02.09.2020
comment
Я вызвал из остального контроллера API, он вставляет пустую запись, но не создает текстовый индекс   -  person San Jaisy    schedule 02.09.2020
comment
можешь показать нам   -  person varman    schedule 02.09.2020
comment
Вот репо - github.com/anandjaisy/mongoDBSpringBoot   -  person San Jaisy    schedule 02.09.2020
comment
просмотрел ваш код, во-первых, когда он вставлен, вы реализуете PostMapping, а не GetMapping. С помощью PostMapping вы можете отправить объект User в теле запроса из плагина почтальона. Вы получаете пустую запись, потому что вы не устанавливаете никаких данных в коде или даже не отправляете объект запроса User через @RequestParam. Пожалуйста, пройдите какой-нибудь учебник   -  person Dinesh Dontha    schedule 03.09.2020
comment
@dinesh это не о вызове rest API, у меня вопрос об аннотации документа. Этот остальной API - всего лишь образец, вы можете пропустить эту часть, когда я запускаю приложение, должна быть создана коллекция. Дело не в том, что я делал в остальном API.   -  person San Jaisy    schedule 03.09.2020
comment
Mongo создает документ, когда вы пытаетесь вставить, если этот документ не существует ранее, он создает его. Простой. Но без попытки вставить, просто имея класс с @Document, ничего не происходит   -  person Dinesh Dontha    schedule 03.09.2020
comment
У меня есть другое примерное приложение, которое делает именно то, что я говорю, вам нужно провести некоторое исследование Spring Data mongo. Данные Spring действительно создают коллекцию с аннотацией @Document. Даже этот mongo.template.insert не создает текстовый индекс в моем примере приложения   -  person San Jaisy    schedule 03.09.2020
comment
@DineshDontha проверьте этот репозиторий - github.com/anandjaisy/sampleMongoApplication создает коллекцию с аннотацией документа   -  person San Jaisy    schedule 03.09.2020
comment
У него есть только @Document и основной класс весенней загрузки, он может создать коллекцию в mongodb, но не будет создавать никаких записей (документов). Если вы все еще сомневаетесь, то удалите коллекцию в monhodb и запустите заново. Спасибо гудлак   -  person Dinesh Dontha    schedule 03.09.2020
comment
Да, это правильно, он не будет создавать никаких записей. Он только создаст коллекцию, по крайней мере, он создает TextIndex, но для моего образца кода он тоже этого не делает. Что не так с моим кодом   -  person San Jaisy    schedule 03.09.2020


Ответы (1)


Я должен неявно настроить на работу

В файле application.properties

spring.data.mongodb.auto-index-creation=true

Или файл application.yml

spring:
  data:
    mongodb:
      auto-index-creation: true

Ссылка - Пожалуйста, используйте 'MongoMappingContext # setAutoIndexCreation (boolean)' или замените 'MongoConfreation (логическое значение)' или переопределите 'MongoConfConf 'быть явным

person San Jaisy    schedule 03.09.2020