一:MongoDB的介绍可以去看百度百科:MongoDB介绍
二:MongoDB的使用
1.连接mongodb:
package com.monitor.util;
import java.net.UnknownHostException;
import com.mongodb.DB;
import com.mongodb.Mongo;
import com.mongodb.MongoOptions;
public class MongoUtil {
public static Mongo mongo = null;
private static final String host = "199.231.87.200";
private static final int port = 27017;
private static final String dbName = "Cabbage";
private static final int connectionsPerHost=10;
private static final int threadsAllowedToBlockForConnectionMultiplier=20;
public static DB getDB(){
if(mongo==null){
init();
}
return mongo.getDB(dbName);
}
public static void init(){
try {
mongo = new Mongo(host, port);
MongoOptions opt = mongo.getMongoOptions();
opt.connectionsPerHost = connectionsPerHost;
opt.threadsAllowedToBlockForConnectionMultiplier = threadsAllowedToBlockForConnectionMultiplier;
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
DB db=MongoUtil.getDB();
2.java操作mongodb
2.1:条件操作符
$gt : >
$lt : <
$gte: >=
$lte: <=
$ne : !=、<>
$in : in
$nin: not in
$all: all
$not: 反匹配
2.2: 向表PEOPLE中插入数据
db.requestStart(); //开启事务
DBCollection table=db.getCollection("PEOPLE"); //获取或者创建了一张表名为"PEOPLE"的表对象
将数据存储在DBObject对象中插入数据库,DBObejct对象类似于Map,是键值对形式存储数据的
DBObject data=new BasicDBObject(); //创建插入的数据对象
data.put("ID", "1");
data.put("NAME", "ADMIN");
data.put("AGE","23");
table.insert(data); //将数据对象插入表中
db.requestDone(); //关闭事务
String jsonStr="{\"ID\":\"1\",\"NAME\":\"admin\",\"AGE\":\"25\"}";
DBObject data=(DBObject)JSON.parse(jsonStr);
table.insert(data); //将数据对象插入表中
2.3:查询表PEOPLE中的数据
首先获取表对象
db.requestStart(); //开启事务
DBCollection table=db.getCollection("PEOPLE"); //获取或者创建了一张表名为"PEOPLE"的表对象
2.3.1:条件查询NAME="aaa"并且AGE>18的用户
table.find(new BasicDBObject("NAME","aaa"),new BasicDBObject("AGE",new BasicDBObject("$gt","18")));
或者
DBObject data=new BasicDBObject();
data.put("NAME","aaa");
data.put("AGE",new BasicDBObject("$gt","18"));
table.find(data);
2.3.2:查询AGE等于18,19,20的用户
table.find(new BasicDBObject("AGE",new BasicDBObject("$in",new int[]{18,19,20})));
2.3.3:mongodb的模糊查询(使用正则表达式查询)
查询邮件地址含有amin的数据:
DBObject data=new BasicDBObject();
Pattern pattern=Pattern.compile("^.*amin.*$", Pattern.CASE_INSENSITIVE); //相当于sql中的'%amin%'
data.put("CUST_EMAIL",pattern);
DBCursor cursor=table.find(data).skip((param.getCurrentPag()-1)*param.getLimit()).limit(param.getLimit());
这里用了mongodb的skip分页查询,skip中是从多少条记录开始跳,limit是查询的条数
2.3.4:或者"or"
BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("jhid", map.get("id")));
values.add(new BasicDBObject("mjid", map.get("id")));
query.put("$or",values);
2.4:处理查询结果
一条数据处理
DBObject object=table.findOne(条件......);
结果集可以用DBCursor来存储
DBCursor cursor=table.find(); //查询所有用户
while(cursor.hasNext()){
1:可以转成对象:
People people=(People)cursor.next();
System.out.println(people.getId);
System.out.println(people.getName);
System.out.println(people.getAge);
2:不能转成对象:
DBObject object=cursor.next();
System.out.println(object.get("ID").toString());
}
2.5:修改表PEOPLE中的数据
首先获取表对象
DBCollection table=db.getCollection("PEOPLE"); //获取或者创建了一张表名为"PEOPLE"的表对象
修改表PEOPLE中ID等于1的用户的NAME为bbb,并返回修改成功或失败的标识
int i=table.update(new BasicDBObject("ID","1"),new BasicDBObject("$set",new BasicDBObject("NAME","bbb")),
false, //如果数据库不存在,是否添加;true--添加,false--不添加;
true //如果有多条数据是否修改;true--当数据库有多条数据时同步修改,false--只修改第一条;
).getN();
2.6:删除表PEOPLE中的数据
table.remove(new BasicDBObject("ID","3")); //删除ID等于3
table.remove(new BasicDBObject("ID",new BasicDBObject("$gt","3"))); //删除ID大于3的数据