JavaはBean注入方式でMongodbとMongodbのデータベースデータ操作を接続する

5795 ワード

MongoDBのjavaでの操作、および参照の依存レコードについて、次回の使用で見つけられるようにします.
Maven依存:
		
			org.mongodb
			mongo-java-driver
			3.10.1
		

接続のプロファイルについて:
mongo.host1=192.168.4.111
mongo.host2=192.168.4.222
mongo.host3=192.168.4.333
mongo.port=27017
mongo.database=test_mongodb
mongo.user=test
mongo.password=123
mongo.connectionsPerHost=8
mongo.maxConnectionIdleTime=60000
mongo.maxConnectionLifeTime=0
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=1500
mongo.maxWaitTime=1500
mongo.socketTimeout=1500

bean注入を使用して接続:
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.WriteConcern;
import com.mongodb.client.MongoDatabase;
@Configuration
@PropertySource(value = "classpath:mongodb.properties")
@Component
public class MongoConf {
	@Value("${mongo.host1}")
	private String host1;
	@Value("${mongo.host2}")
	private String host2;
	@Value("${mongo.host3}")
	private String host3;
	@Value("${mongo.port}")
	private Integer port;
	@Value("${mongo.database}")
	private String database;
	@Value("${mongo.collections}")
	private String collections;
	@Value("${mongo.user}")
	private String userName;
	@Value("${mongo.password}")
	private String password;
	@Value("${mongo.connectionsPerHost}")
	private Integer connectionsPerHost;
	@Value("${mongo.maxConnectionIdleTime}")
	private Integer maxConnectionIdleTime;
	@Value("${mongo.maxConnectionLifeTime}")
	private Integer maxConnectionLifeTime;
	@Value("${mongo.threadsAllowedToBlockForConnectionMultiplier}")
	private Integer threadsAllowedToBlockForConnectionMultiplier;
	@Value("${mongo.connectTimeout}")
	private Integer connectTimeout;
	@Value("${mongo.maxWaitTime}")
	private Integer maxWaitTime;
	@Value("${mongo.socketTimeout}")
	private Integer socketTimeout;
	
	
		@Bean
	public MongoClient mongoClient() {
			MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress(host1,port), 
													new ServerAddress(host2,port), 
													new ServerAddress(host3,port)),
				 					 MongoCredential.createCredential(userName, database, password.toCharArray()),
				 					 MongoClientOptions.builder()
					 					.connectionsPerHost(connectionsPerHost)
					 					.writeConcern(WriteConcern.ACKNOWLEDGED)
					 					.maxConnectionIdleTime(maxConnectionIdleTime)
					 					.maxConnectionLifeTime(maxConnectionLifeTime)
					 					.threadsAllowedToBlockForConnectionMultiplier(threadsAllowedToBlockForConnectionMultiplier)
					 					.connectTimeout(connectTimeout)
					 					.maxWaitTime(maxWaitTime)
					 					.socketTimeout(socketTimeout)
					 					.build()
				 					);
			return mongoClient;
	}
	@Bean
	public MongoDatabase mongoDatabase(MongoClient mongoClient) {
		MongoDatabase mongoDatabase = mongoClient.getDatabase("ht_for_web");
		return mongoDatabase;
	}
//-------------------------         ,        ,      
	@Bean
	public MongoCollection mongoCollection(MongoDatabase mongoDatabase){
		MongoCollection collection=mongoDatabase.getCollection(collections);
		return collection;
	}
	//  mongodb   
	 @Bean
    public ClientSession clientSession(MongoClient mongoClient) {	
    	ClientSession clientSession = mongoClient.startSession();
 	  	return clientSession;
	}
}


1、挿入
		//    
		JSONObject obj = new JSONObject();
		obj.put("id",1);//     
		Document document = Document.parse(obj.toJSONString());
		collections.insertOne(document);
		//    , JSON      Document      List
		Document document = Document.parse(obj.toJSONString());
		List list = new ArrayList<>();
		list.add(document)
		collections.insertMany(list);

2、更新
		//---------------    
		JSONObject rootNode = new JSONObject();
		Document update = new Document();
		Document document = Document.parse(rootNode.toJSONString());
		update.append("$set", document);
		UpdateResult result = collections.updateOne(Filters.eq("_id",1))), update);

		//---------------    
        //  update      "$set"  
        Document update = new Document();
        update.append("$set", new Document("test", "1"));
        //Filters.eq(key, value)     
        UpdateResult result = collections.updateMany(Filters.eq(key, value), update);
        System.out.println("matchedCount = " + result.getMatchedCount());
	
		//---------------      
        //  :     ,     "$set"
        Document replacement = new Document();
        replacement.append("value", 123);
        //Filters.eq(key, value)     
        collections.replace(Filters.eq(key, value), replacement);


3、削除
		//------------          
       collections.deleteOne(Filters.eq(key, value));
		//------------          
        collections.deleteMany(Filters.eq(key, value));


4、照会
		//----------    
		 collections.find();
		//---------    
		 collections.find(Filters.eq(key, value));

これらのクエリに加えてmongodbのパイプライン操作は複雑であり,Studio 3 TのAggregateの機能を用いてmongodbを簡単に操作するパイプラインを得ることができ,javaなどのコードを生成することができる.