meikkiie 发表于 2015-7-8 09:22:30

JAVA操作MongoDB数据库

  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
页: [1]
查看完整版本: JAVA操作MongoDB数据库