博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 调用 groovy 脚本文件,groovy 访问 MongoDB
阅读量:5162 次
发布时间:2019-06-13

本文共 4223 字,大约阅读时间需要 14 分钟。

groovy 访问 MongoDB 示例:

shell.groovy

package dbimport com.gmongo.GMongoClientimport com.mongodb.BasicDBObjectimport com.mongodb.MongoCredentialimport com.mongodb.ServerAddress/** * 本地无密 mongodb 数据库连接 */def connect() {    GMongoClient client = new GMongoClient(new ServerAddress('127.0.0.1',50513))    return client}/** * SSH mongodb 数据库连接 */def connectSSH() {    //以下这两行是针对包含用户名和密码配置的数据库的。    MongoCredential credentials = MongoCredential.createMongoCRCredential('root','xy', 'pass' as char[])    //MongoClientOptions options = MongoClientOptions.builder().connectTimeout(1000)    //创建一个Client连接,如果是认证的则使用下面的这一行    GMongoClient client = new GMongoClient(new ServerAddress('10.101.114.108',22), [credentials])    return client}def topics(map) {    def DB = connect().getDB('xy')    /*def sl = map['$gte']    def el = map['$lte']*/    //查询条件    BasicDBObject object = new BasicDBObject('timestamp',new BasicDBObject(map))    println(object.toString())    println(DB.getCollection('topics').count(object))    //println(DB.getCollection('topics').count())}def topic_tip(map) {    def DB = connect().getDB('xy')    //查询条件    BasicDBObject object1 = new BasicDBObject('$match',new BasicDBObject(map))    BasicDBObject object2 = new BasicDBObject('$group',new BasicDBObject('_id',null).append('num_tutorial',new BasicDBObject('$sum','$kd_money')))    //聚合查询    //db.getCollection('topic_tip').aggregate([{$match:{ 'timestamp' : { '$gte' : 1376065109781 , '$lte' : 1576065109781}}},{$group : {_id : null, num_tutorial : {$sum : '$kd_money'}}}])    println(DB.getCollection('topic_tip').aggregate(object1,object2))}def currency_log(map) {    def DB = connect().getDB('xy')    //查询条件    BasicDBObject object1 = new BasicDBObject('$match',new BasicDBObject(map))    BasicDBObject object2 = new BasicDBObject('$group',new BasicDBObject('_id',null).append('num_tutorial',new BasicDBObject('$sum','$kd_money')))    //聚合查询    //db.getCollection('currency_log').aggregate([{$match:{ "currency_time" : { "$gte" : 1504368000000 , "$lte" : 1504454399000}}},{$group : {_id : "$currency_type", num_tutorial : {$sum : "$currency_money"}}}])    println(DB.getCollection('currency_log').aggregate(object1,object2))}

java 调用 shell.groovy 文件

package test;import groovy.lang.GroovyClassLoader;import groovy.lang.GroovyObject;import javafx.application.Application;import javafx.stage.Stage;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;public class Shell extends Application {    public static void main(String[] args) {        launch(args);    }    @Override    public void start(Stage primaryStage) {        try {            GroovyClassLoader loader = new GroovyClassLoader();            Class groovyClass = loader.parseClass(new File(Shell.class.getClassLoader().getResource("db/shell.groovy").getPath()));            GroovyObject object = (GroovyObject) groovyClass.newInstance();            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            String[] timeStart = new String[]{"2017-08-28 00:00:00","2017-08-29 00:00:00","2017-08-30 00:00:00","2017-08-31 00:00:00"};            String[] timeEnd = new String[]{"2017-08-28 23:59:59","2017-08-29 23:59:59","2017-08-30 23:59:59","2017-08-31 23:59:59"};            for (int i=0 ;i<7; i++) {                Date start = format.parse(timeStart[i]);                Date end = format.parse(timeEnd[i]);                Map
params = new HashMap<>(); params.put("$gte",start.getTime()); params.put("$lte",end.getTime()); // topics 是 shell.groovy 中的方法名,params 是传给 topics 的参数,执行下面语句完成 topics 方法脚本的调用 object.invokeMethod("topics",params); } /*GroovyScriptEngine engine = new GroovyScriptEngine(Shell.class.getClassLoader().getResource("db").getPath()); Binding binding = new Binding(); binding.setVariable("language","Groovy"); engine.run("studenttopicdata.groovy",binding);*/ } catch (Exception e) { e.printStackTrace(); System.out.println("Exception e = " + e.toString()); } }}

转载于:https://www.cnblogs.com/molashaonian/p/8763337.html

你可能感兴趣的文章
计算机网络基础知识
查看>>
C#里如何遍历枚举所有的项
查看>>
如何在键盘出现时滚动表格,以适应输入框的显示
查看>>
超级强大的鼠标手势工具
查看>>
常用Dockerfile举例
查看>>
jquery的ajax用法
查看>>
设计模式-策略模式(Strategy)
查看>>
django orm 数据查询详解
查看>>
JarvisOJ Basic 熟悉的声音
查看>>
C# list导出Excel(二)
查看>>
CAS 单点登录模块学习
查看>>
跟着辛星用PHP的反射机制来实现插件
查看>>
Android应用开发-网络编程①
查看>>
input中的name,value以及label中的for
查看>>
静态库制作-混编(工程是oc为基础)
查看>>
jQuery 显示加载更多
查看>>
代理模式
查看>>
Confluence 6 系统运行信息中的 JVM 内存使用情况
查看>>
Confluence 6 升级以后
查看>>
用JS实现版面拖拽效果
查看>>