MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment initialiser MongoClient une fois dans Spring Boot et utiliser ses méthodes ?

Voici quelques façons de créer une instance de MongoClient , en le configurant et en l'utilisant dans l'application Spring Boot.

(1) Enregistrement d'une instance Mongo à l'aide de métadonnées basées sur Java :

@Configuration
public class AppConfig {
    public @Bean MongoClient mongoClient() {
        return MongoClients.create();
    }
}

Utilisation depuis CommandLineRunner run de méthode (tous les exemples sont exécutés de la même façon ):

@Autowired 
MongoClient mongoClient;

// Retrieves a document from the "test1" collection and "test" database.
// Note the MongoDB Java Driver API methods are used here.
private void getDocument() {
    MongoDatabase database = client.getDatabase("test");
    MongoCollection<Document> collection = database.getCollection("test1");
    Document myDoc = collection.find().first();
    System.out.println(myDoc.toJson());
}


(2) Configuration à l'aide de la classe AbstractMongoClientConfiguration et utilisation avec MongoOperations :

@Configuration
public class MongoClientConfiguration extends AbstractMongoClientConfiguration {

    @Override
    public MongoClient mongoClient() {
        return MongoClients.create();
    }

    @Override
    protected String getDatabaseName() {
        return "newDB";
    }
}

Notez que vous pouvez définir le nom de la base de données (newDB ) auquel vous pouvez vous connecter. Cette configuration est utilisée pour travailler avec la base de données MongoDB à l'aide des API Spring Data MongoDB :MongoOperations (et son implémentation MongoTemplate ) et le MongoRepository .

@Autowired 
MongoOperations mongoOps;

// Connects to "newDB" database, and gets a count of all documents in the "test2" collection.
// Uses the MongoOperations interface methods.
private void getCollectionSize() {
    Query query = new Query();
    long n = mongoOps.count(query, "test2");
    System.out.println("Collection size: " + n);
}


(3) Configuration à l'aide de la classe AbstractMongoClientConfiguration et utilisation avec MongoRepository

Utilisation de la même configuration MongoClientConfiguration classe (ci-dessus dans le sujet 2 ), mais annotez également avec @EnableMongoRepositories . Dans ce cas, nous utiliserons MongoRepository méthodes d'interface pour obtenir des données de collection sous forme d'objets Java.

Le référentiel :

@Repository
public interface MyRepository extends MongoRepository<Test3, String> {

}

Le Test3.java Classe POJO représentant le test3 document de collection :

public class Test3 {

    private String id;
    private String fld;

    public Test3() {    
    }

    // Getter and setter methods for the two fields
    // Override 'toString' method
    ...
}

La méthode suivante pour obtenir des documents et les imprimer en tant qu'objets Java :

@Autowired 
MyRepository repository;

// Method to get all the `test3` collection documents as Java objects.
private void getCollectionObjects() {
    List<Test3> list = repository.findAll();
    list.forEach(System.out::println);
}