t-baby / mongodb-plugin Goto Github PK
View Code? Open in Web Editor NEWMongoDB Plugin for Java
License: Apache License 2.0
MongoDB Plugin for Java
License: Apache License 2.0
2017.09.05爆出超2.6W 个MongoDB 节点被劫持事件,plugin将在下版本不使用密码连接时自动发出警告。
findOne返回的字段名为id,但是是一个将ObjectId转成String的字符串
这个在某些业务场景里面是需要的,建议增加下
目前的Plugin无法直接支持JSON的插入,更新等操作,建议增加该项功能,当前如果需要将JSON存进去,要么得转成BSON,要么得用MongoBean,否则提示找不到fastjson的编码器.
请问如何更新数组,格式如下
当在configPlugin处添加MongoJFinalPlugin 并设置debug为false时,全局的log等级都将变成warn,直接覆盖了logback.xml配置的root的等级,如果logback.xml root等级为Info,则项目中的Info日志均不会输出。只有大于等于warn的日志才会输出。
当查询不到结果时, 能不能 不抛异常, 返回个null也好啊.
重现方式,在AccountBean里面新建属性:
private Long createDate;
// insert的时候存入时间戳
bean.setCreateDate(System.currentTimeMillis());
这是执行findById或者其他有ClassZ类型转换的测试,就会异常:
com.alibaba.fastjson.JSONException: can not cast to long, value : {"$numberLong":"1471597786181"}
count 要是每页的行数的话怎么能大于总数呢,要是结束的行数的话(long) this.page * (long) this.count>totalRow不是一定会为true吗?
if (count > totalRow) {
this.count = (int) totalRow;
}
if (this.count <= 0 || this.page <= 0 || this.page > totalPage || (long) this.page * (long) this.count > totalRow) {
throw new RuntimeException("MongPage tips: (づ ̄ 3 ̄)づ count or page is error !");
}
亲,有空支持下not in吧,谢谢。
好像目前不支持啊
增加Upsert选项后会方便很多,一来代码要减少不少,二来性能上也会大大提高,因为不需要先判断记录是否存在,再决定是用update/replace还是save
通过find出来的日期格式,是可以被fastjson正常识别的日期格式,但aggregate出来的日期格式,是MongoDB标准的日期格式, 这种格式不被fastjson所识别,请修正.
例如:
用find取出来的日期, 格式为: {"startTime":1497422308377}
用aggregate出出来的日期,格式为 {"startTime":{$date,1497422308377}}
希望增加对子集中数组的处理功能,目前的方法,只能对子集进行整个替换,效率太低.
利用mongodb的findAndModify 原子操作,实现简单队列
我遇到下面这个情况(伪代码)
MongoQuery query = new MongoQuery().use("somedb");
Map<String, String> cons = ...; // {"f1":123,"f2":"abc"}
for(String key : cons.keySet()){
query.set(key, cons.get(ke)); //以为会添加查询条件
}
query.findAll(); //结果输出所有数据,之前set的条件并不生效
请问这种情况一般是怎么处理的?
严重: Exception starting filter jfinal java.lang.UnsupportedClassVersionError: com/cybermkd/mongo/plugin/MongoJFinalPlugin : Unsupported major.minor version 52.0 (unable to load class com.cybermkd.mongo.plugin.MongoJFinalPlugin)
tomcat
版本7.0.x
jdk
版本1.7.0_80
mongoplugin
版本 1.0.8.0
jfinal里的配置
MongoJFinalPlugin jFinalPlugin = new MongoJFinalPlugin(); jFinalPlugin.add(PropKit.get("mongodb.host"), PropKit.getInt("mongodb.port")); jFinalPlugin.setDatabase(PropKit.get("mongodb.db")); jFinalPlugin.auth(PropKit.get("mongodb.user"), PropKit.get("mongodb.password")); jFinalPlugin.setDebug(true); plugins.add(jFinalPlugin);
完整错误信息
java.lang.UnsupportedClassVersionError: com/cybermkd/mongo/plugin/MongoJFinalPlugin : Unsupported major.minor version 52.0 (unable to load class com.cybermkd.mongo.plugin.MongoJFinalPlugin) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2963) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1212) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1692) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1573) at com.fxtcn.jfinal.GovLogSysConfig.configPlugin(GovLogSysConfig.java:42) at com.jfinal.core.Config.configJFinal(Config.java:53) at com.jfinal.core.JFinal.init(JFinal.java:63) at com.jfinal.core.JFinalFilter.init(JFinalFilter.java:49) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4855) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5549) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1930) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
查询eq时需要等很长时间,而且最后接口为空
com.cybermkd.mongo.kit.MongoQuery.exist(String) 似乎存在问题,无法做到字段过滤(我理解问题?)。
可以做如下修改
public MongoQuery exist(String key) {
query.add(Filters.exists(key));
return this;
}
可以增加如下方法:
/**
* 是否存在某个key
* @param key
* @param exists true 存在,false 不存在
* @return
*/
public MongoQuery exist(String key,boolean exists) {
query.add(Filters.exists(key,false));
return this;
}
如题 @T-baby
MongoPaginate line - 35
if (count > totalRow) { this.count = (int) totalRow; } if (this.count <= 0 || this.page <= 0 || this.page > totalPage) { throw new RuntimeException("MongPage tips: (づ ̄ 3 ̄)づ count or page is error !"); }
当 查询结果为空,赋值 this.count为空,始终抛出下面异常
可以将两个条件使用and连接
建一个QQ交流群能够更快的解决开发过程中遇到的问题。
通过Modify(column,json).update()执行或者用add(bson).update()去更新时,所存入的日期格式最终在Mongo中会变成长整型,格式如下:
"startTime" : NumberLong(1497515932214)
不管是否有此记录,findOne() 都能返回一个不为空的对象。
看代码后,发现是如下代码
见:com.cybermkd.mongo.kit.MongoKit.parseObject(Document, Class)
private T parseObject(Document doc, Class clazz) {
try {
if (doc == null) {
return JSON.parseObject(new JSONObject().toJSONString(), clazz);
}
return JSON.parseObject(JSON.toJSONString(doc), clazz);
} catch (NullPointerException e) {
error("parseObject", clazz.getName());
return JSON.parseObject(new JSONObject().toJSONString(), clazz);
}
}
doc == null 也 new一个 对象出来。
个人觉得,应该返回null
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.