sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan initialiserer man MongoClient én gang i Spring Boot og bruger dens metoder?

Her er et par måder at oprette en forekomst af MongoClient på , konfigurere og bruge det i Spring Boot-applikationen.

(1) Registrering af en Mongo-instans ved hjælp af Java-baserede metadata:

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

Brug fra CommandLineRunner 's run metode (alle eksempler køres på samme måde ):

@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) Konfigurer ved hjælp af klassen AbstractMongoClientConfiguration og brug med MongoOperations:

@Configuration
public class MongoClientConfiguration extends AbstractMongoClientConfiguration {

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

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

Bemærk, at du kan indstille databasenavnet (newDB ) du kan oprette forbindelse til. Denne konfiguration bruges til at arbejde med MongoDB-database ved hjælp af Spring Data MongoDB API'er:MongoOperations (og dens implementering MongoTemplate ) og 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) Konfigurer ved hjælp af klassen AbstractMongoClientConfiguration og brug med MongoRepository

Bruger den samme konfiguration MongoClientConfiguration klasse (ovenfor i emne 2 ), men anmærk derudover med @EnableMongoRepositories . I dette tilfælde vil vi bruge MongoRepository grænseflademetoder til at hente indsamlingsdata som Java-objekter.

Depotet:

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

}

Test3.java POJO-klassen repræsenterer test3 samlingens dokument:

public class Test3 {

    private String id;
    private String fld;

    public Test3() {    
    }

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

Følgende metode til at hente dokumenter og udskrive som Java-objekter:

@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);
}


  1. NodeJS - MongoDB:brug en åbningsforbindelse

  2. new Date() i samlet $project

  3. måde at opdatere flere dokumenter med forskellige værdier

  4. Spørg Mongodb om måned, dag, år... af en dato og klokkeslæt