20.使用javaAPI操作MongoDB

获取集合实例的工具类:

package com.itcast.util;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;

public class DBUtil {
    public static Mongo mg = null;
    public static DB db = null;
    public static DBCollection collection;

    /**
     * 根据 数据库名称dbName 和集合名称collName 获取集合实例
     * @param dbName    数据库名称
     * @param collName  集合名称
     * @return
     */
    public static DBCollection getDBCollection(String dbName, String collName){
        if(mg==null){
            try {
                mg = new Mongo(); //相当于 new Mongo("127.0.0.1:27017");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        if(db ==null){
            db = mg.getDB(dbName);
        }

        return db.getCollection(collName);

    }
}

增删改查示例

package com.itcast.helloworld;

import java.util.ArrayList;
import java.util.List;

import com.itcast.util.DBUtil;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.WriteResult;

public class MongoTest {

    /**
     * MongoDB增删改查示例
     */
    public static void main(String[] args) {

        /**
         * 1.查询出集合users中所有的数据
         */
        query();

        /**
         * 2.删除haha集合中name="wangergou"的数据
         */
        DBObject obj = new BasicDBObject("name", "wangergou");
        delete(obj);

        /**
         * 3.插入一条数据
         */
        //  3.1首先创建要插入的对象 {name:"liheizi",age:2,books:{[shuihuzhuan,hongloumeng,xiyouji,sanguo]}}
        BasicDBObject objs = new BasicDBObject();
        objs.put("name","liheizi");
        objs.put("age",2);
        List<String> booklist = new ArrayList<String>();
        booklist.add("shuihuzhuan");
        booklist.add("hongloumeng");
        booklist.add("xiyouji");
        booklist.add("sanguo");
        objs.put("books", booklist);
        //  3.2执行插入
        insert(objs);
        //  3.3查看插入后的结果
        query2();

        /**
         * 4.批量插入数据
         */
        List<DBObject> objLists = new ArrayList<DBObject>();
        BasicDBObject jim = new BasicDBObject("name", "jim");
        BasicDBObject sally = new BasicDBObject("name", "tommy");
        objLists.add(jim);
        objLists.add(sally);

        insertBatch(objLists);
        query2();

        /**
         * 5.更新操作,为集合增加email属性
         */
        DBObject update = new BasicDBObject();
        //"$set"表示修改器 和shell中的使用时类似的
        update.put("$set", new BasicDBObject("email","sdfdf@qq.com"));
        update(new BasicDBObject(),update,false,true);
        query2();

        /**
         * 6.查询器的使用
         * 查询出users集合中的指定字段  (name和age)
         */
        DBObject queryObj = new BasicDBObject();
        queryObj.put("_id", false);
        queryObj.put("name", true);
        queryObj.put("age", true);
        DBCursor cur = find(null,queryObj);
        while(cur.hasNext()){
            DBObject next = cur.next();
            System.out.println("name:"+next.get("name") + "-- age:"+next.get("age"));
        }
    }


    /**
     * 查询
     */
    public static void query(){
        DBCollection coll = DBUtil.getDBCollection("foobar", "users");
        //查询集合中所有数据
        DBCursor cur = coll.find();

        while(cur.hasNext()){
            DBObject obj = cur.next();
            System.out.println("name:"+obj.get("name")+"  age:"+obj.get("age")+"  country:"+obj.get("country"));
        }

        System.out.println("查询结果总计:"+cur.count()+"条");
    }
    public static void query2(){
        DBCollection coll = DBUtil.getDBCollection("foobar", "haha");
        //查询集合中所有数据
        DBCursor cur = coll.find();

        while(cur.hasNext()){
            DBObject obj = cur.next();
            System.out.println("name:"+obj.get("name")+" email:"+obj.get("email"));
        }

        System.out.println("查询结果总计:"+cur.count()+"条");
    }
    /**
     * 删除
     * @param obj
     */
    public static void delete(DBObject obj){

        DBCollection coll=DBUtil.getDBCollection("foobar", "haha");

        WriteResult res = coll.remove(obj);
        System.out.println("共影响到"+res.getN()+"条数据");
    }

    /**
     * 插入数据
     */
    public static void insert(DBObject obj){

        DBCollection coll=DBUtil.getDBCollection("foobar", "haha");

        //执行插入操作
        System.out.println("共有"+coll.insert(obj).getN()+"条数据成功插入!");
    }

    /**
     * 批量插入
     * @param objLists
     */
    public static void insertBatch(List<DBObject> objLists) {
        DBCollection coll = DBUtil.getDBCollection("foobar", "haha");
        coll.insert(objLists).getN();
    }

    /**
     * 更新操作
     * @param queryObj  查询器
     * @param updateObj 修改后的值
     * @param upsert    true:存在则更新 不存在则插入
     * @param multi     是否进行全局多匹配操作?
     */
    private static void update(BasicDBObject queryObj, DBObject updateObj,
            boolean upsert, boolean multi) {

        DBCollection coll = DBUtil.getDBCollection("foobar", "haha");

        int count = coll.update(queryObj, updateObj, upsert, multi).getN();
        System.out.println(count+"条记录被更新");
    }

    /**
     * 查询数据(不带分页)
     * @param ref 查询器 如果为null  代表是匹配所有
     * @param keys  要查询的字段集合
     * @param collName 被操作的集合对象  
     * @return
     */
    public static DBCursor find(DBObject ref, DBObject keys) {
        //1.得到集合
        DBCollection coll = DBUtil.getDBCollection("foobar", "users"); 

        return coll.find(ref, keys);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值