Я хочу «заполнить» mongoDB некоторым содержимым при запуске службы. Содержимое представляет собой список документов с метаданными.
Проблема в том, что этот контент будет вставляться каждый раз при запуске приложения, и я не нашел способа предотвратить вставку дублирующихся данных.
Я могу не просто удалить все данные из базы данных, так как я хочу добавить данные позже, которые должны быть сохранены и сохранены там, даже когда служба будет перезапущена и, возможно, заполнена другими/новыми пресетами.
Сейчас я пробую что-то вроде это:
Код: Выделить всё
@Autowired
public void init(VectorStore vectorStore) {
List documents = List.of(
new Document("Once there was a little Girl",
Map.of("type", "init", "pos", "1", "plot", "1")),
new Document("The girls name was Mary",
Map.of("type", "init", "pos", "2", "plot", "1")),
new Document("Once there was a little Boy",
Map.of("type", "init", "pos", "1", "plot", "2")),
new Document("The boys name was Peter",
Map.of("type", "init", "pos", "2", "plot", "2")),
new Document("Peter was a wild kid",
Map.of("type", "init", "pos", "3", "plot", "2"))
);
List collect = vectorStore.similaritySearch("type == 'init'")
.stream().map(Document::getId).collect(Collectors.toList());
vectorStore.delete(
collect
);
vectorStore.add(documents);
}
Поведение довольно стабильное. Когда я меняю значение типа с init на Story, другая строка избежит удаления. Это сводит меня с ума...
Мне хотелось бы иметь способ предоставлять в БД исходные данные, которые могут меняться по мере развития сервиса, не заполняя БД дополнительным мусором, который предположительно приведет к проблемам позже. (Я предполагаю, что так и будет, но я еще не на стадии подтверждения того, что это будет проблемой, тем не менее, это раздражает)
Кто-нибудь решил что-то подобное?
Подробнее здесь: https://stackoverflow.com/questions/792 ... duplicates