Как получить документ из mongodb, используя его идентификатор строки и имя коллекции строк в SpringData - PullRequest
0 голосов
/ 08 января 2020

Я знаю, что обычно нам нужно сделать что-то похожее на это для получения документа из mongodb в весенних данных:

  1. Определить класс и аннотировать его с помощью @Document:
@Document ("persons")
public class Person
Использовать MongoTemplete:

mongoOps.findById(p.getId(), Person.class);

Проблема в том, что во время выполнения я не знаю тип класса документа, у меня просто есть имя коллекции строк и его строка Id. Как можно получить документ, используя SpringData? Примерно так:

db.myCollectionName.findOne({_id: myId})

Тип объекта результата не имеет значения, это может быть даже объект, я просто хочу сопоставить его с JsonNode Джексона.

1 Ответ

0 голосов
/ 08 января 2020

Возможный обходной путь для этого, вы можете использовать агрегатную функцию mongooperation, как это

AggregationResults<Object> aggResults = mongoOps.aggregate(newAggregation(match(Criteria.where("_id").is(myId)) ,
                myCollectionName, Object.class);

    return aggResults.getUniqueMappedResult();
...