java操作mongoDB
mongoDB作为一个牛气哄哄的nosql内存数据库,的确有很多优点,对于大数据量、高并发、弱事务的互联网应用,MongoDB可以应对自如。接触到mongoDB 参考了下api实现了增删改查、mongoDB 是面向对象设计,不用写sql语句 直接操作api 方法 就可以实现,这会儿数据库语句写不好的娃娃们有福了。直接贴码:
DataTest.java
package com.zk.db;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;
import org.junit.Test;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
/**
* 测试mongodb curd
* @author zk
* @time 2015年4月24日23:19:15
*/
public class DataTest {
// 1.建立一个Mongo的数据库连接对象
static Mongo connection = null;
// 2.创建相关数据库的连接
static DB db = null;
static {
try {
connection = new Mongo("127.0.0.1:27017"); //默认链接地址
} catch (Exception e) {
e.printStackTrace();
}
db = connection.getDB("one");//获取数据库名称
}
/**
* 测试创建数据文档集合 类似 数据表 person
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test1() throws UnknownHostException, MongoException {
// 实例化
MongoDb mongoDb = new MongoDb("one");
mongoDb.createCollection("person");
}
/**
* 测试添加一条记录
*
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test2() throws UnknownHostException, MongoException {
// 实例化
DBObject p1 = new BasicDBObject();
p1.put("name", "zk00");
insert(p1, "person");
}
/**
* 测试添加一条记录
*
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test3() throws UnknownHostException, MongoException {
List<DBObject> dbObjects = new ArrayList<DBObject>();
DBObject zs = new BasicDBObject("name", "zhaosi");
DBObject zq = new BasicDBObject("name", "zhuqi");
dbObjects.add(zs);
dbObjects.add(zq);
insertBatch(dbObjects, "person");
}
/**
* 测试 根据id 删除一条记录
*
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test4() throws UnknownHostException, MongoException {
deleteById("553a5accb9d133bcf4056a40", "person");
}
/**
* 测试 根据条件 删除
*
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test5() throws UnknownHostException, MongoException {
DBObject obj = new BasicDBObject();
obj.put("name", "zk00");
int count = deleteByDbs(obj, "person");
System.out.println("删除数据的条数是: " + count);
}
/**
* 测试 更新操作
*
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test6() throws UnknownHostException, MongoException {
DBObject obj = new BasicDBObject();
obj.put("name", "zhaosi");
DBObject update = new BasicDBObject();
update.put("$set", new BasicDBObject("name", "nn1"));
update(obj, update, false, true, "person");
}
/**
* 测试 查询出person集合中的name
*
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test7() throws UnknownHostException, MongoException {
DBObject keys = new BasicDBObject();
keys.put("_id", false);
keys.put("name", true);
DBCursor cursor = find(null, keys, "person");
while (cursor.hasNext()) {
DBObject object = cursor.next();
System.out.println(object.get("name"));
}
}
/**
* 测试 分页
*
* @throws UnknownHostException
* @throws MongoException
*/
@Test
public void test8() throws UnknownHostException, MongoException {
DBCursor cursor = find(null, null, 0, 6, "person");
while (cursor.hasNext()) {
DBObject object = cursor.next();
System.out.print("name=" + object.get("name") + " ");
System.out.println("_id=" + object.get("_id"));
}
}
/**
* 创建一个数据库集合
*
* @param collName
* 集合名称
* @param db
* 数据库实例
*/
public void createCollection(String collName) {
DBObject dbs = new BasicDBObject();
db.createCollection("person", dbs);
}
/**
* 为相应的集合添加数据
*
* @param dbs
* @param collName
*/
public void insert(DBObject dbs, String collName) {
// 1.得到集合
DBCollection coll = db.getCollection(collName);
// 2.插入操作
coll.insert(dbs);
}
/**
* 为集合批量插入数据
*
* @param dbses
* @param collName
*/
public void insertBatch(List<DBObject> dbses, String collName) {
DBCollection coll = db.getCollection(collName);
coll.insert(dbses);
}
/**
* 根据id删除数据
*
* @param id
* @param collName
* @return 返回影响的数据条数
*/
public int deleteById(String id, String collName) {
DBCollection coll = db.getCollection(collName);
DBObject dbs = new BasicDBObject("_id", new ObjectId(id));
int count = coll.remove(dbs).getN();
return count;
}
/**
* 根据条件删除数据
*
* @param id
* @param collName
* @return 返回影响的数据条数
*/
public int deleteByDbs(DBObject dbs, String collName) {
DBCollection coll = db.getCollection(collName);
int count = coll.remove(dbs).getN();
return count;
}
/**
* 更新数据
*
* @param find
* 查询器
* @param update
* 更新器
* @param upsert
* 更新或插入
* @param multi
* 是否批量更新
* @param collName
* 集合名称
* @return 返回影响的数据条数
*/
public int update(DBObject find, DBObject update, boolean upsert,
boolean multi, String collName) {
DBCollection coll = db.getCollection(collName);
int count = coll.update(find, update, upsert, multi).getN();
return count;
}
/**
* 查询(分页)
* @param ref
* @param keys
* @param start
* @param limit
* @return
*/
public DBCursor find(DBObject ref, DBObject keys, int start, int limit,
String collName) {
DBCursor cur = find(ref, keys, collName);
return cur.limit(limit).skip(start);
}
/**
* 查询 (不分页)
* @param ref
* @param keys
* @param start
* @param limit
* @param collName
* @return
*/
public DBCursor find(DBObject ref, DBObject keys, String collName) {
DBCollection coll = db.getCollection(collName);
DBCursor cur = coll.find(ref, keys);
return cur;
}
}
注意:connection.close();最后别忘记调用,另外 做过java的同学都知道连接池 以及释放回收链接问题。mongodb自动内部实现了连接池。不需要再考虑该问题,也可以自行实现设置。
时间: 2024-10-10 20:30:40