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的更多相关文章

  1. Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)

    依赖包(附件有下载): 包名 类型 操作系统 luajava-1.1.jar jar ALL libluajava-1.1.so .so linux luajava-1.1.dll .dll wind ...

  2. (转)java调用python脚本

    这篇博客旨在吐血分享今天遇到的java调用python脚本遇到的坑,折腾了3个多小时终于可以跑通了,代码超级短,但网上的好多资料都是抄来抄去的,很少有能够直接跑通的,尤其是针对你的python文件中用 ...

  3. 通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  4. java调用shell脚本小demo

    复制指定文件cpp.sh: [root@localhost soft]# vim cpp.sh#!/bin/bash name="$1"\cp /home/soft/test/${ ...

  5. Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()

    Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...

  6. java调用python脚本并向python脚本传递参数

    1.安装Eclipse 先安装jdk,再安装Eclipse,成功后开始建立py_java项目,在这个项目的存储目录SRC下建立test包,在test包中New-Class,新建MyDemo类,建好完成 ...

  7. Java 调用 shell 脚本详解

    这一年的项目中,有大量的场景需要Java 进程调用 Linux的bash shell 脚本实现相关功能. 从之前的项目中拷贝的相关模块和网上的例子来看,有个别的“陷阱”造成调用shell 脚本在某些特 ...

  8. java调用dll/so文件

    大家都知道用C++编写的程序如果用于windows使用则编译为xxx.dll文件,如果是Linux使用则编译为libxxx.so文件.下面将java调用dll/so文件的方法粘出来方便下次使用.此处使 ...

  9. Java调用Lua脚本(热载实现)

    前言: Lua作为解析执行的脚本语言, 往往是易变逻辑编写的首选语言, 尤其是在游戏领域. C/C++和Lua的结合, 往往了标配. 比如Redis, Nginx其对Lua的支持, 也是杠杠的. 当然 ...

随机推荐

  1. Scracpy爬取图片实例

    非常简单,直接上爬虫代码 # -*- coding: utf-8 -*- import scrapy import urllib import logging class TopitComSpider ...

  2. Linux+Nginx+Asp.net Core及守护进程部署

    上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完 ...

  3. docker之网络管理

    一.安装网桥管理工具 [root@node03 web]# yum install bridge-utils -y 二.docker网络的4种模式 host模式,使用--net=host指定. con ...

  4. 将Centos 的默认yum源改为阿里云的yum源后出现的问题

    阿里各版本yum源如下: Centos5:http://mirrors.aliyun.com/repo/Centos-5.repo Centos6:http://mirrors.aliyun.com/ ...

  5. win10 添加项目右键用vscode打开

    1.新建reg文件:在vscode安装目录下新建一个文本文件,然后将文件后缀改为:*.reg,文件名任意,例如:vsCodeOpenFolder.reg. 2.编写文本文件内容.将下面的内容Copy到 ...

  6. 前端开发工具icestar

    前端开发工具icestar 最近忙里偷闲,把之前的mock工具进行了全面的重构,最大的改变就是换了个名称icestar,icestar意思就是"爱死他",首先他的预想并不只是替代m ...

  7. Keyshot+AD渲染PCB效果图

    Keyshot+AD渲染PCB效果图 1.前言 前些天,公司同事找到我说,公司的展会宣传册要更新的了,有几款新的产品需要更新添加上去,大部分的新产品都有实物demo,可以拍照修一下图弄上去.但不巧,其 ...

  8. openstack horizon 开发第二天

    依照上次的简单的仪表盘添加动作额外添加或修改的文件mydashboard/├── mypanel│   ├── forms.py│   ├── tables.py│   ├── templates│  ...

  9. 11.11 Daily Scrum

      Today's tasks  Tomorrow's tasks 丁辛 餐厅列表事件处理 餐厅列表事件处理             李承晗             实现指定地点搜索 整合已经完成的部 ...

  10. Scrum Meeting NO.4

    Scrum Meeting No.4 1.会议内容 今天我们开始着手重构前端通讯模块的代码.用封装性较好的HttpClient代替了源代码中比较底层的访问方式,并按照约定的json格式处理HttpRe ...