mongoDB的基本操作

基本入门参考:

import com.mongodb.*;
import junit.framework.TestCase;
import org.bson.types.ObjectId;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.awt.image.DataBuffer;
import java.util.*;

/**
 * Created by wzhjdls on 14-12-20.
 */
public class MongoDBTest extends TestCase {
    Mongo mongo = null;
    DB db = null;
    DBCollection user = null;

    @Before
    public void setUp() throws Exception {
        mongo = new Mongo("localhost", 27017);
        db = mongo.getDB("test");
        user = db.getCollection("user");

    }
    @After
    public void destroy(){
        mongo.close();

    }

    //Query all collections name
    public void testGetAllCollections() {
        Set<String> collections = db.getCollectionNames();
        for (String name : collections) {
            System.out.println(name);
        }
    }

    //Query all user informations
    @Test
    public void testFind() {
        testInitTestData();//ini
        //Query all data and return DBCusor
        DBCursor cursor = user.find();

        while (cursor.hasNext()) {
            print(cursor.next());
        }
        //获取数据总条数
        int sum = cursor.count();
        System.out.println("sum==" + sum);
    }

    public void testFind1() {
        DBCursor cursor = user.find();
        while (cursor.hasNext()) {
            print(cursor.next());
        }

    }

    @Test
    public void testFindm(){//多个条件查询

        BasicDBObject basicDBObject = new BasicDBObject();
        basicDBObject.put("name","longzhen");
        basicDBObject.put("age",20);
        DBCursor cursor = user.find(basicDBObject);

        while (cursor.hasNext()) {
            print(cursor.next());
        }
        //获取数据总条数
        int sum = cursor.count();
        System.out.println("sum==" + sum);

    }

    public void testFindCase1(){

        BasicDBObject basicDBObject = new BasicDBObject();
        basicDBObject.put("name","longzhen");
        basicDBObject.put("age",20);
        BasicDBList basicDBList = new BasicDBList();
        DBCursor cursor = user.find(basicDBObject);


        while (cursor.hasNext()) {
            basicDBList.add(cursor.next());
            print(cursor.next());
        }
        //获取数据总条数
        int sum = cursor.count();
        System.out.println("sum==" + sum);




    }

    //Query first data
    public void testFindOne() {
        testInitTestData();
        DBObject oneUser = user.findOne();
        print(oneUser);

    }

    //Query conditions
    public void testConditionQuery() {
        testInitTestData();
        //Query id =
        DBObject oneUser = user.findOne(new BasicDBObject("name", "zhangguochen"));
        print(oneUser);

        //Query age= 24
        List<DBObject> userList1 = user.find(new BasicDBObject("age", 24)).toArray();
        printList(userList1);
        System.out.println();

        //Query age >=23
        List<DBObject> userList2 = user.find(new BasicDBObject("age", new BasicDBObject("$gte", 23))).toArray();
        print("----Query age >=23");
        printList(userList2);

        //Query age <=25
        List<DBObject> userList3 = user.find(new BasicDBObject("age", new BasicDBObject("$lte", 25))).toArray();
        print("----Query age <=25");
        printList(userList3);
        //查询age!=25
        List<DBObject> userList4 = user.find(new BasicDBObject("age", new BasicDBObject("$ne", 25))).toArray();
        print("        find age!=25: ");
        printList(userList4);
        //查询age in[23,24,27]
        List<DBObject> userList5 = user.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN, new int[]{23, 24, 27}))).toArray();
        print("find agein[23,24,27]: ");
        printList(userList5);
        /**
         * 初//查询age not in[23,24,27]始化测试数据
         */
        List<DBObject> userList6 = user.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.NIN, new int[]{23, 24, 27}))).toArray();
        print("        find age not in[23,24,27]: ");
        printList(userList6);

        //查询29>age>=20
        List<DBObject> userList7 = user.find(new BasicDBObject("age", new BasicDBObject("$gte", 20).append("$lt", 29))).toArray();
        print("        find 29>age>=20: ");
        printList(userList7);
    }

    @Test  //Update
    public void testQuery1() {
//        testInitTestData();
        BasicDBObject doc = new BasicDBObject();
        doc.put("address", "henan");
        BasicDBObject doc1 = new BasicDBObject("home", doc);
        List<DBObject> userList = user.find(doc1).toArray();
//        userList.get(0).get("age");
//        System.out.println(userList.get(0).get("age"));
        printList(userList);
        BasicDBObject updateDoc = new BasicDBObject("age", 25);
        user.update(updateDoc, new BasicDBObject("age", 876)); //这样将更新所有字段
        List<DBObject> userList1 = user.find(new BasicDBObject("age", 876)).toArray();
        printList(userList1);
    }

    //Update 局部
    @Test
    public void testUpdated() {
        BasicDBObject doc = new BasicDBObject();
        doc.put("$set", new BasicDBObject("age", 233));
        BasicDBObject doc1 = new BasicDBObject("name", "longzhen");
        List<DBObject> list = user.find(doc1).toArray();
        printList(list);
        System.out.println();
        user.update(doc1, doc, true, false);

        List<DBObject> list1 = user.find(doc1).toArray();
        printList(list1);
        System.out.println();


        //remove data
        BasicDBObject doc2 = new BasicDBObject("age", 233);
        user.remove(doc2);
        List<DBObject> list2 = user.find(doc1).toArray();
        list2.get(0).get("key");
        printList(list2);

    }

    @Test
    public void testQuery3() {
        testInitTestData();
//        BasicDBObject doc = new BasicDBObject("name", "cuichongfei");
        DBCursor cursor = user.find();
        while (cursor.hasNext()) {
            System.out.println(cursor.next());
        }
        DBObject oneUser = user.findOne(new BasicDBObject("name", "longzhen"));
        print(oneUser);
        System.out.println();
        //指定字段查询,只查询age和name两个字段
        //查询特定字段
        DBObject query1 = new BasicDBObject();//要查的条件
        query1.put("age", new BasicDBObject("$gt",20));
        DBObject field = new BasicDBObject();//要查的哪些字段
        field.put("name", true);
        field.put("age", true);
        List<DBObject> userList10=user.find(query1,field).toArray();
        print("        select name,age where age>20");
        printList(userList10);


    }


    @Test
    public void testInitTestData() {

        DBObject jindazhong = new BasicDBObject();
        jindazhong.put("name", "jindazhong");
        jindazhong.put("age", 21);
        jindazhong.put("interest", new String[]{"hadoop", "mongodb"});
        jindazhong.put("wife", "小龙女");
        DBObject jindazhongAddress = new BasicDBObject();
        jindazhongAddress.put("address", "shanghai");
        jindazhong.put("home", jindazhongAddress);

        DBObject yangzhi = new BasicDBObject();
        yangzhi.put("name", "yangzhi");
        yangzhi.put("age", 22);
        yangzhi.put("interest", new String[]{"shopping", "sing", "hadoop"});
        DBObject yangzhiAddress = new BasicDBObject();
        yangzhiAddress.put("address", "hubei");
        yangzhi.put("home", yangzhiAddress);

        DBObject diaoyouwei = new BasicDBObject();
        diaoyouwei.put("name", "diaoyouwei");
        diaoyouwei.put("age", 23);
        diaoyouwei.put("interest", new String[]{"notejs", "sqoop"});
        DBObject diaoyouweiAddress = new BasicDBObject();
        diaoyouweiAddress.put("address", "shandong");
        diaoyouwei.put("home", diaoyouweiAddress);

        DBObject cuichongfei = new BasicDBObject();
        cuichongfei.put("name", "cuichongfei");
        cuichongfei.put("age", 24);
        cuichongfei.put("interest", new String[]{"ebsdi", "dq"});
        cuichongfei.put("wife", "凤姐");
        DBObject cuichongfeiAddress = new BasicDBObject();
        cuichongfeiAddress.put("address", "shanxi");
        cuichongfei.put("home", cuichongfeiAddress);

        DBObject huanghu = new BasicDBObject();
        huanghu.put("name", "huanghu");
        huanghu.put("age", 25);
        huanghu.put("interest", new String[]{"shopping", "study"});
        huanghu.put("wife", "黄蓉");
        DBObject huanghuAddress = new BasicDBObject();
        huanghuAddress.put("address", "guangdong");
        huanghu.put("home", huanghuAddress);

        DBObject houchangren = new BasicDBObject();
        houchangren.put("name", "houchangren");
        houchangren.put("age", 26);
        houchangren.put("interest", new String[]{"dota", "dq"});
        DBObject houchangrenAddress = new BasicDBObject();
        houchangrenAddress.put("address", "shandong");
        houchangren.put("home", houchangrenAddress);

        DBObject wangjuntao = new BasicDBObject();
        wangjuntao.put("name", "wangjuntao");
        wangjuntao.put("age", 24);
        wangjuntao.put("interest", new String[]{"sport", "study"});
        wangjuntao.put("wife", "王语嫣");
        DBObject wangjuntaoAddress = new BasicDBObject();
        wangjuntaoAddress.put("address", "hebei");
        wangjuntao.put("home", wangjuntaoAddress);

        DBObject miaojiagui = new BasicDBObject();
        miaojiagui.put("name", "miaojiagui");
        miaojiagui.put("age", 28);
        miaojiagui.put("interest", new String[]{"hadoop", "study", "linux"});
        miaojiagui.put("wife", null);
        DBObject miaojiaguiAddress = new BasicDBObject();
        miaojiaguiAddress.put("address", "未知");
        miaojiagui.put("home", miaojiaguiAddress);

        DBObject longzhen = new BasicDBObject();
        longzhen.put("name", "longzhen");
        longzhen.put("age", 20);


        Map<String,String> map = new HashMap<String,String>();
        map.put("name","chenpu");
        map.put("age","21");
        Map<String,String> map1 = new HashMap<String,String>();
        map1.put("name","zhang");
        map1.put("age", "22");

        List<Map<String,String>> list= new LinkedList<Map<String,String>>();
        list.add(map);
        list.add(map1);

        longzhen.put("interest", list);
        longzhen.put("wife", null);
        DBObject longzhenAddress = new BasicDBObject();
        longzhenAddress.put("address", "sichuan");
        longzhen.put("home", longzhenAddress);

        user.insert(jindazhong);
        user.insert(yangzhi);
        user.insert(diaoyouwei);
        user.insert(cuichongfei);
        user.insert(huanghu);
        user.insert(houchangren);
        user.insert(wangjuntao);
        user.insert(miaojiagui);
        user.insert(longzhen);


    }

    //delete collections
    public void testRemove() {
        user.drop();
    }

    //print data
    public void print(Object object) {
        System.out.println(object);
    }

    public void printList(List<DBObject> objectList) {
        for (Object object : objectList) {
            print(object);
        }
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值