Вы можете использовать MongoTemplate
для этого, который может быть подключен автоматически, поскольку пружина обеспечивает и настраивает его для вас автоматически.
У него есть метод
find(Query query, Class<T> entityClass, String collectionName)
, который позволяет определить имя пользовательской коллекции и пользовательский entityClass.
Для динамического запроса c используйте BasicQuery
в качестве Query
подразумевает передачу необработанного запроса mon и go json и полей / проекций как json, если вы хотите ограничить возвращаемые поля.
Используйте org.bson.Document
в качестве entityClass, который в основном является * Реализация 1014 *, которая позволяет динамически перебирать поля c.
mongoTemplate.find(new BasicQuery("{ name: \"mongodb\"}", "{ name: 1}"), Document.class, "your-collection-name").forEach(x -> {
x.get("name"); // access a specific field
x.forEach((key, value) -> {
// iterate over all fields
});
});
Когда вы имеете дело с большим результатом, рассмотрите возможность использования метода stream()
MongoTemplate
таким же образом, поскольку он не загружает все документы в память одновременно, и вы можете обрабатывать его во время выполнения один за другим.