JavaはBean注入方式でMongodbとMongodbのデータベースデータ操作を接続する
5795 ワード
MongoDBのjavaでの操作、および参照の依存レコードについて、次回の使用で見つけられるようにします.
Maven依存:
接続のプロファイルについて:
bean注入を使用して接続:
1、挿入
2、更新
3、削除
4、照会
これらのクエリに加えてmongodbのパイプライン操作は複雑であり,Studio 3 TのAggregateの機能を用いて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などのコードを生成することができる.