Java 调用 groovy 脚本文件,groovy 访问 MongoDB
groovy 访问 MongoDB 示例:
shell.groovy
package db import com.gmongo.GMongoClient
import com.mongodb.BasicDBObject
import com.mongodb.MongoCredential
import 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<String,Long> 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());
}
}
}
Java 调用 groovy 脚本文件,groovy 访问 MongoDB的更多相关文章
- Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)
依赖包(附件有下载): 包名 类型 操作系统 luajava-1.1.jar jar ALL libluajava-1.1.so .so linux luajava-1.1.dll .dll wind ...
- (转)java调用python脚本
这篇博客旨在吐血分享今天遇到的java调用python脚本遇到的坑,折腾了3个多小时终于可以跑通了,代码超级短,但网上的好多资料都是抄来抄去的,很少有能够直接跑通的,尤其是针对你的python文件中用 ...
- 通过Java调用Python脚本
在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...
- java调用shell脚本小demo
复制指定文件cpp.sh: [root@localhost soft]# vim cpp.sh#!/bin/bash name="$1"\cp /home/soft/test/${ ...
- Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
- java调用python脚本并向python脚本传递参数
1.安装Eclipse 先安装jdk,再安装Eclipse,成功后开始建立py_java项目,在这个项目的存储目录SRC下建立test包,在test包中New-Class,新建MyDemo类,建好完成 ...
- Java 调用 shell 脚本详解
这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的“陷阱”造成调用shell 脚本在某些特 ...
- java调用dll/so文件
大家都知道用C++编写的程序如果用于windows使用则编译为xxx.dll文件,如果是Linux使用则编译为libxxx.so文件.下面将java调用dll/so文件的方法粘出来方便下次使用.此处使 ...
- Java调用Lua脚本(热载实现)
前言: Lua作为解析执行的脚本语言, 往往是易变逻辑编写的首选语言, 尤其是在游戏领域. C/C++和Lua的结合, 往往了标配. 比如Redis, Nginx其对Lua的支持, 也是杠杠的. 当然 ...
随机推荐
- C#集合与泛型集合
看到这个标题,大家应该就知道有泛型集合,就有非泛型集合 既然都是集合,咱们今儿就简单的来对比讲解下 需要记住的不算太多,理解记忆.理解记忆 2017-11-0411:39:09 C# 泛型集合之非泛型 ...
- fis入门-单文件编译之文件优化(optimize)
FIS(Front-end Integrated Solution ),是百度的前端集成解决方案.最近几天在研究前端构建的东西,就顺便了解了下,果断各种高大上,可以到FIS官网围观感受一下.如果对fi ...
- fiddler之会话数据的修改
fiddler之会话数据的修改 fiddler记录http的请求,并且针对特定的http请求,可以分析请求数据.修改数据.调试web系统等,功能十分强大.本篇主要讲两种修改的数据的方法,断点和Unlo ...
- PS官方正式中文版(搬砖分享)
https://pan.baidu.com/s/1c3IdQq0 PS官方正式中文版(搬砖分享) 注意事项: 1.安装开始前请先断网,在成功破解激活前请全程断网: 2.安装完成后先试运行软件一次,然后 ...
- MatCap冰冻效果Shader
MatCap方案 使用说明 制作合适的MatCap贴图 这张图决定冰像不像,网上找.Vray渲个球.ASE或者ShaderForge连,甚至直接手绘,总之只要一张长得像下面的图 注意MatCap图只有 ...
- Jenkins邮件通知
Jenkins邮件通知 Jenkins 配备了一个开箱工具,添加一个电子邮件通知的构建项目. 第1步 - 配置SMTP服务器. 转到 Manage Jenkins → Configure System ...
- coinmarketcap前20之cardano卡尔达诺(ADA艾达币)
1. 在开始讲述cardano前,我先说说自己在coinmarketcap前20系列的"学习方法". 最初,我把前20做了一个简单表格,不做任何功课的基础上,记录自己对它们的简要认 ...
- Alpha 冲刺六
团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 今天没有进行站立式会议,由于团队内有些细节 ...
- FINAL视频预发布
视频地址:http://v.youku.com/v_show/id_XMTg0MjMzNDIwNA==.html?spm=a2hzp.8253869.0.0&from=y1.7-2
- PAT 甲级 1021 Deepest Root
https://pintia.cn/problem-sets/994805342720868352/problems/994805482919673856 A graph which is conne ...