Java连接mongodb,Java运行mongodb js脚本

java创建mongodb客户端,并且根据用户登陆信息,获取相应的mongodb的database。对于创建mongodb的连接客户端,对于这个创建ibatis中也有此类用法。他们大致意思是相同的。其实这些难度都是很小的,大部分难的是一个写法。记下这个写法写这些东西都不是事情。

public MongoDatabase createMongoDatabase() {
	
	MongoClientOptions.Builder userdbBuilder = MongoClientOptions.builder();
	userdbBuilder.connectTimeout("");
	userdbBuilder.socketTimeout("");
	userdbBuilder.maxWaitTime("");
	userdbBuilder.connectionsPerHost("");
	userdbBuilder.readPreference(ReadPreference.secondaryPreferred());
	MongoClientOptions userdbOptions = userdbBuilder.build();
	
	MongoCredential mongoCredential = null;
	if  (StringUtils.isNotBlank(this.mongo_user)) {
		mongoCredential = MongoCredential.createScramSha1Credential(
											"mongo_user", 
											"mongo_dbName", 
											"mongo_passwd".toCharArray());
	}
	
	ServerAddress serverAddress = new ServerAddress(
					this.mongo_host, this.mongo_port);
	//创建mongodb的连接客户端,对于这个创建ibatis中也有此类用法
	this.mongoClient = new MongoClient(
		serverAddress, 
		mongoCredential, 
		userdbOptions);
	MongoDatabase coll = this.mongoClient.getDatabase("mongoDBName");
	return coll;
	}

使用创建好的mongodb客户端获取到的database,来执行对应的增删改查。如下的创建一个查询条件,有两种写法

BasicDBObject query = new BasicDBObject();
query.put("字段", "查询条件");
//另一种写法
query = BasicDBObject.parse("'查询字段' : '查询内容'");

根据过滤条件执行查找

//database是上面createMongoDatabase创建的
MongoCursor<Document> cursor = database.getCollection("collectionName")
                        .find(query)
                        .skip("")
                        .limit(1000)
                        .iterator();

遍历获取查询到的内容

 //遍历数据
while(cursor.hasNext()) {
  Document document = cursor.next();
  JSONObject jsonObject = JSONObject.parseObject(document.toJson());
  this.target_database.getCollection("collectionName").insertOne(document);

  System.out.println(jsonObject);
}

Java运行mongodb js脚本,主要思想是,Java执行js。下面是连接数据库的脚本。用户名密码已经数据库名字已经被删掉,你可以自行添加自己特定的。

load("nashorn:mozilla_compat.js");
importPackage(java.util)


var serverAddress = new com.mongodb.ServerAddress("db ip address", portNum);
var credentials = com.mongodb.MongoCredential.createScramSha1Credential("user", "dbname","password".toCharArray());
var dbname = "dbname";
var collctionName = "collctionName";

var userdbBuilder = com.mongodb.MongoClientOptions.builder();
userdbBuilder.readPreference(com.mongodb.ReadPreference.secondaryPreferred());
var userdbOptions = userdbBuilder.build();
var dataSrcClient = new com.mongodb.MongoClient(serverAddress, credentials, userdbOptions);
var collection = dataSrcClient.getDatabase(dbname).getCollection(collctionName);

var dc = collection.find(org.bson.Document.parse("{'category':'试测'}")).iterator();

while(dc.hasNext()) {
  var dbObj = dc.next();
  print("开始打印数据库表的值 " + collctionName)
  print(dbObj.getString("word"));
}

dc.close();
dataSrcClient.close();

有了上面的脚本后,你可以创建java的js执行引擎,然后执行这段代码。

private ScriptEngine scriptEngine = 
				new ScriptEngineManager().getEngineByName("nashorn");

这段读写的代码,可以在上上篇博客里ibatis源码解析找到。有没有发现,这些大神级别的框架里面提供源码的东西都是极其优秀的。而且代码写的非常优雅。

Reader reader = new InputStreamReader(
				ClassLoader.getSystemResourceAsStream("js路径地址"));
scriptEngine.eval(reader);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值