java操作mongoDB实现CURD详解大数据

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自动内部实现了连接池。不需要再考虑该问题,也可以自行实现设置。

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/8957.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论