Как найти существующие списки коллекций в mongorepository весенней загрузки? - PullRequest
0 голосов
/ 26 февраля 2019

Во-первых, ниже приведен класс документов mongodb,

@Getter
@Setter
@Document(collection="Posts") // The name of collection is "Posts"
public class Post {

    @Id
    private String _id;

    @Indexed(unique = true)
    private Long id;

    @Field
    private String title;

    @Field
    private String body;

    @Field
    private Date createdDate;

    @DBRef 
    private User user;

    @DBRef 
    private Collection<Tag> tags;
}

И я сделал простой интерфейс mongorepository

public interface PostMongoRepository extends MongoRepository<Post, Long> {
}

Но у меня проблемы с загрузкой исходных данных json в mongodbв слое обслуживания

try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "EUC-KR"))) {
            String line;
            StringBuffer strBuffer = new StringBuffer();
            while ((line = br.readLine()) != null) {
                strBuffer.append(line+ "\n");
            }

            ObjectMapper objectMapper = new ObjectMapper();
       objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
            TypeReference<List<Post>> typeReference = new TypeReference<List<Post>>(){};
            Collection<Post> posts = objectMapper.readValue(strBuffer.toString(), typeReference);

            // I am stuck on this line
            if(postMongoRepository.FIND_THE_COLLECTION_TITLE) {  

              for(Post post : posts) {
                postMongoRepository.save(post);
              }
            }
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }

Я пытаюсь подтвердить, сгенерирован ли набор «Посты» или нет.Но я понятия не имею, как найти существующие коллекции через интерфейс mongorepository.Я пытаюсь использовать аннотацию @Query, но она ограничена значением ключа, а не коллекцией.

Я хочу выяснить, как найти существующую коллекцию базы данных mongodb с интерфейсом mongorepository.

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете получить все имена коллекций, используя MongoOperations.getCollectionNames():

https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html#getCollectionNames--

Невозможно получить эту информацию на основе репозитория данных Spring.

В обычных обстоятельствах также нет необходимости проверять, существует ли коллекция.Если он отсутствует, он будет создан Spring (обычно при запуске).

...