java查询mongodb

最近公司的一个大表要从mysql中分离出来迁移到mongodb上,于是便有了下文:

一、多条件等值查询:

DBObject obj = new BadicDBObject();

obj.put("commentId",1);

obj.put("name",2);

DBCollection coll = db.getCollection("comment");

DBCursor cur = coll.find(obj);

二、多条件等值排序限制条数查询:

接上面

DBCollection coll = db.getCollection("comment");

DBCursor cur = coll.find(obj).sort(new BasicDBObject("commentId",-1)).limit(10);  //倒序,取最多十条

三、in查询

DBObject obj = new BasicDBObject();

BasicDBList list  = new BasicDBList();

list.add(1);list.add(2);

obj.put("commentId",new BasicDBObject("$in",list));

四、or查询

DBObject obj = new BasicDBObject();

BasicDBList list = new BasicDBList();

list.add("status",new BasicDBObject("$lt",2));

list.add("status",new BasicDBObject("$gt",4));

obj.put("$or",list);

五、mapReduce查询

map = function(){ emit(this.id,this.name);}   //emit相当于js中的eval,而this相当于collection的一行,emit会将数据组合为一个对象

reduce=function(key,value) {return {k:key,v:value};}  //这个reduce相当于js中的回调函数,里面传过来的值你可以按照js的写法加工后再返回

out是一个结果集,会缓存到你的库里

其它的操作跟查询的一样,eg:limit:3,sort:{commentId:-1} 等等.

六、findAndModify方法的使用

这个方法主要用来实现字段的自增功能,findAndModify(query,target,sort,isremove,update,returnValue,upsert)

query:查询条件

target:将要操作的字段

sort:排序

isremove:是否执行删除操作

update:sql中的set操作

returnValue:是否返回值

upsert:如果没有值,是否插入

对这个表的操作是线程安全的,mongodb会自动维护这个表的安全性。

DBCollection coll = getCollection(ID_INCREMENT);
long id = 1;
try {
DBObject sort = new BasicDBObject("currentId", -1);
DBObject update = new BasicDBObject("$inc",new BasicDBObject("currentId",1));
DBObject result = coll.findAndModify(new BasicDBObject("type", "comment"), new BasicDBObject("currentId",1), sort, false, update , true, true);
id =Long.parseLong(result.get("currentId") + "");
}catch(Exception e) {
e.printStackTrace();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值