1、 首先,下载MongoDB对Java支持的驱动包

驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads

2、Java操作MongoDB示例

在本示例之前你需要启动mongod.exe的服务,启动后,下面的程序才能顺利执行;

1)、 建立MongoDBTest.java,完成简单的mongoDB数据库操作

Mongo mongo = new Mongo();

这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。

DB db = mongo.getDB(“test”);

这样就获得了一个test的数据库,如果mongoDB中没有创建这个数据库,mongoDB会自动创建当前数据库。

得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。

DBCollection users = db.getCollection("users");

这样就获得了一个DBCollection,它相当于我们数据库的“表”。

2)、接下来就可以进行增删改查操作

MongoURI uri = new MongoURI("mongodb://localhost:27017");
        String databaseName ="myDatabase";
        String collectionName = "mycollections";
        
        Mongo mongo = null;
        DB db = null;
        DBCollection userCollection;
        try {
            //定义Mongo服务
            mongo =new Mongo("localhost", 27017);
            //mongo = new Mongo(uri);
            
            
//            mongo = new Mongo();
//            DBAddress addr = new DBAddress("localhost", 27017,databaseName);
//            mongo.connect(addr);
            
            //删除数据库
            //mongo.dropDatabase(databaseName);

//获取databaseName对应的数据库,不存在则自动创建
            db = mongo.getDB(databaseName);
            
            //添加用户
            //db.addUser("admin", new char []{'a','d','m','i','n'});
            
            //移除用户
            //db.removeUser("admin");
            
            //验证权限
            boolean flag = db.authenticate("admin", new char []{'a','d','m','i','n'} );
          
            if(flag == false){
                return;
            }
            
            //设置db为只读 ,只读就不能写入数据了   对save管用,对insert好像不管用
           //db.setReadOnly(true);

//获取collectionName对应的集合,不存在则自动创建
            //db.createCollection("mycollection", new BasicDBObject());
            userCollection = db.getCollection(collectionName);
            
            
            //查询所有的DataBase
            for(String dbName : mongo.getDatabaseNames()){
                System.out.println("databasename:" + dbName);
            }
            
          
            //查询所有的聚集集合
            for(String collection :db.getCollectionNames()){
                System.out.println("collectionName:" + collection);
            }
            
            
            //查询是否存在collectionName集合
            if(db.collectionExists(collectionName)){
//               //去掉重复的数据
//                List dislist = userCollection.distinct("userId");
//                int len = dislist.size();
//                for(int i = 0 ; i< len ; i++){
//                    System.out.println(dislist.get(i));
//                }
                
                //查询
                System.out.println(userCollection.find(new BasicDBObject("userId",1)).toArray());
                
                //返回前2个
                //System.out.println(userCollection.find({},{reviews:{$slice:2}});
                
                //System.out.println("分页:"+userCollection.find(new BasicDBObject("",new BasicDBObject("$slice", 2))).toArray());
                
                //查询所有的数据
                //DB游标
                DBCursor cursor = userCollection.find();
                while(cursor.hasNext()){
                    DBObject userDbobj = cursor.next();             System.out.println("userId:"+userDbobj.get("userId")+";age:"+userDbobj.get("age")+";sex:"+userDbobj.get("sex")+";address:"+userDbobj.get("address"));
                }
                
                
                //条件查询
                //查询age 等于 24
                System.out.println("find age = 24: " + userCollection.find(new BasicDBObject("age", 24)).toArray());

//查询age 大于等于 24
                System.out.println("find age >= 24: " + userCollection.find(new BasicDBObject("age", new BasicDBObject("$gte", 24))).toArray());
                //查询age 小于等于 24
                System.out.println("find age <= 24: " + userCollection.find(new BasicDBObject("age", new BasicDBObject("$lte", 24))).toArray());

//查询age 不等于25
                System.out.println("查询age!=25:" + userCollection.find(new BasicDBObject("age", new BasicDBObject("$ne", 25))).toArray());

//查询某个范围的数据
                System.out.println("查询age in 25/26/27:" + userCollection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN, new int[] { 25, 26, 27 }))).toArray());

//查询不在某个范围数据
                System.out.println("查询age not in 25/26/27:" + userCollection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.NIN, new int[] { 25, 26, 27 }))).toArray());
               
                //按age排序
                System.out.println("查询age exists 排序:" + userCollection.find().sort(new BasicDBObject("age",new BasicDBObject(QueryOperators.ORDER_BY, 1))).limit(2).skip(1).toArray());   //(new BasicDBObject("age", new BasicDBObject(QueryOperators.ORDER_BY, 1))).toArray());

new BasicDBObject();

System.out.println("只查询age属性:" + userCollection.find(null, new BasicDBObject("age", true)).toArray());

System.out.println("只查属性:" + userCollection.find(null, new BasicDBObject("age", true), 0, 2).toArray());

System.out.println("只查属性:" + userCollection.find(null, new BasicDBObject("age", true), 0, 2, Bytes.QUERYOPTION_NOTIMEOUT).toArray());
            }

//添加数据
            DBObject user = new BasicDBObject();
            user.put("userId", 2);
            user.put("userName", "tom");
            user.put("age", 21);
            user.put("sex", "male");
            user.put("address", "北京海淀");
            
            userCollection.save(user);
            
            //getN  对save和insert不管用
//            WriteResult saveResult = userCollection.save(user);
//            System.out.println(saveResult.getN());
//            System.out.println(saveResult.isLazy());
//            if(saveResult.getN() > 0){
//                System.out.println("添加成功");
//            }
            
            
            //添加List集合
//            List<DBObject> list = new ArrayList<DBObject>();
//            list.add(user);
//            DBObject user2 = new BasicDBObject();
//            user2.put("userId", 2);
//            user2.put("userName", "lily");
//            user2.put("age", 20);
//            user2.put("sex", "female");
//            user2.put("address", "新加坡");
//            list.add(user2);
//            
//            userCollection.insert(list);
            //看是否插入成功
            System.out.println("集合中数据量:" + userCollection.count());
            
            
            
            //删除数据
//            WriteResult wr = userCollection.remove(new BasicDBObject("userId",1));
//            System.out.println(wr.getN());
//            System.out.println(wr.isLazy());
//            if(wr.getN() > 0){
//                System.out.println("删除成功!");
//            }
            
            
            //删除整个集合
//            userCollection.drop();
            
            
            //修改
            DBObject newUser =new  BasicDBObject();
            newUser.put("userId", 3);
            newUser.put("userName", "tomAndKitty");
            newUser.put("age", 25);
            user.put("sex", "male");
            user.put("address", "北京朝阳");
            
//            
//            //当数据库不存在就不修改、不添加数据,当多条数据就不修改
//            WriteResult updateResult = userCollection.update(new BasicDBObject("userId",1),newUser);
//            WriteResult updateResult = userCollection.update(new BasicDBObject("userId",3),newUser,
//                    true,   //如果数据库不存在,是否添加
//                    false     //false只修改第一条,true如果有多条就不修改
//                    );
//            System.out.println(updateResult.getN());
//            if(updateResult.getN()>0){
//                System.out.println("修改成功");
//            }
            
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }finally{
            //关闭Mongo服务
            if(mongo != null){
                mongo.close();
            }
            db = null;
            userCollection = null;
        }
    }

JAVA操作MongoDB数据库的更多相关文章

  1. java操作mongodb数据库实现新建数据库,新建集合,新建文档

    *首先明确一点,要通过java代码创建mongodb数据库实例,需要同时创建集合和文档. 代码实现: /* 建立与mongodb数据库的连接,可指定参数,如:MongoClient client = ...

  2. java操作mongoDB数据库的简单实例

    首先导入mongoDB的jar包 http://pan.baidu.com/s/1bnGMJRD //DataBase.java package com.mongodb.test; import ja ...

  3. 不使用spring的情况下原生java代码两种方式操作mongodb数据库

    由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...

  4. 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

    由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...

  5. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  6. [转]MongoDB for Java】Java操作MongoDB

    原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...

  7. 学习MongoDB--(11):应用举例(利用java操作MongoDB)

    原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/articl ...

  8. Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...

  9. Mongodb快速入门之使用Java操作Mongodb

    [IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...

随机推荐

  1. [Linux] 获得系统位数

    三种方法获得系统多少位: 以下三个例子都得到的是64位的系统 1. getconf LONG_BIT 2. echo $HOSTTYPE 3. uname –a

  2. PAT A 1014. Waiting in Line (30)【队列模拟】

    题目:https://www.patest.cn/contests/pat-a-practise/1014 思路: 直接模拟类的题. 线内的各个窗口各为一个队,线外的为一个,按时间模拟出队.入队. 注 ...

  3. 10 个学习iOS开发的最佳网站(转)

    10 个学习iOS开发的最佳网站 作者 jopen 2012-09-26 08:59:56 1) Apple Learning Objective C Objective-C,通常写作ObjC和较少用 ...

  4. 湖南省第十二届大学生计算机程序设计竞赛 F 地铁 多源多汇最短路

    1808: 地铁 Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i ...

  5. hdu 3183(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 思路:比较前后两个相邻的字符,如果前面一个字符大于后面一个字符,就把它去掉. #include ...

  6. Alcatraz安装 不能用解决方案

    1.安装 1>Github上下载Alcatraz,下载地址:https://github.com/supermarin/Alcatraz  2>Alcatraz是xcode的插件,这个插件 ...

  7. Java eclipse下 Ant build.xml实例详解

    在有eclipse集成环境下ant其实不是很重要,但有些项目需要用到,另外通过eclipse来学习和理解ant是个很好的途径,所以写他demo总结下要点,希望能够帮到大家. 一.本人测试环境eclip ...

  8. Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

    使用命令关闭占用80端口的程序 sudo fuser -k 80/tcp

  9. hdu2767 Proving Equivalences Tarjan缩点

    Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  10. configSections

         由于最近一个项目的数据库变动比较频繁, 为了减少数据层的负担, 打算采用.net的MVC框架, 使用LINQ对付数据层.       这个框架的web.config文件里出现了configS ...