sql >> データベース >  >> NoSQL >> MongoDB

Spring BootでMongoClientを一度初期化し、そのメソッドを使用するにはどうすればよいですか?

    MongoClientのインスタンスを作成する方法はいくつかあります。 、SpringBootアプリケーション内での構成と使用。

    (1)Javaベースのメタデータを使用したMongoインスタンスの登録:

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

    CommandLineRunnerからの使用法 のrun メソッド(すべての例は同様に実行されます ):

    @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)AbstractMongoClientConfigurationクラスを使用して構成し、MongoOperationsで使用します:

    @Configuration
    public class MongoClientConfiguration extends AbstractMongoClientConfiguration {
    
        @Override
        public MongoClient mongoClient() {
            return MongoClients.create();
        }
    
        @Override
        protected String getDatabaseName() {
            return "newDB";
        }
    }
    

    データベース名(newDB)を設定できることに注意してください )に接続できます。この構成は、Spring Data MongoDB APIを使用してMongoDBデータベースを操作するために使用されます:MongoOperations (およびその実装MongoTemplate )および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)AbstractMongoClientConfigurationクラスを使用して構成し、MongoRepositoryで使用します

    同じ構成を使用するMongoClientConfiguration クラス(上記のトピック2 )、ただし、さらに@EnableMongoRepositoriesで注釈を付けます 。この場合、MongoRepositoryを使用します コレクションデータをJavaオブジェクトとして取得するためのインターフェイスメソッド。

    リポジトリ:

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

    Test3.java test3を表すPOJOクラス コレクションのドキュメント:

    public class Test3 {
    
        private String id;
        private String fld;
    
        public Test3() {    
        }
    
        // Getter and setter methods for the two fields
        // Override 'toString' method
        ...
    }
    

    ドキュメントを取得して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);
    }
    


    1. SpringデータのMongoDBの例が機能しない

    2. PyMongoAggregateのexecutionStatsの取得方法

    3. MongoDB。コレクション内の各ドキュメントに一意の番号を設定します

    4. mongodbのすべての一意のタグのリストを取得します