zoukankan      html  css  js  c++  java
  • java操作mongodb

    代码1:

    package com.ooooo.mongo;
     
    import java.net.UnknownHostException;
    import java.util.Set;
     
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import org.junit.Test;
     
    import com.mongodb.BasicDBObject;
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import com.mongodb.MongoClient;
    import com.mongodb.MongoException;
     
    public class JavaMongoDBTest {
     
    /**
    * Java + MongoDB Hello world Example
    * 
    */
     
       public static void main(String[] args) {
           try {
               //实例化Mongo对象,连接27017端口
           MongoClient mongo = new MongoClient("localhost", 27017);
                                  //连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
               DB db = mongo.getDB("ytn-db");
               // Get collection from MongoDB, database named "yourDB"
    //从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
               DBCollection collection = db.getCollection("yourCollection");
       // 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
               BasicDBObject document = new BasicDBObject();
               document.put("id", 1002);
               document.put("msg", "hello world mongoDB in Java---ytan");
               document.put("msg23", "hello world mongoDB in Java---yian--002");
               document.put("msg23111", "hello world mongoDB in Java---yun--002");
     
               //将新建立的document保存到collection中去
               collection.insert(document);
               // 创建要查询的document
               BasicDBObject searchQuery = new BasicDBObject();
               searchQuery.put("id", 1002);
               // 使用collection的find方法查找document
               DBCursor cursor = collection.find(searchQuery);
               //循环输出结果
               while (cursor.hasNext()) {
               System.out.println(cursor.next());
     
               
               }
               System.out.println("Done"); 
           } catch (UnknownHostException e) {
               e.printStackTrace();
           } catch (MongoException e) {
               e.printStackTrace();
           }
       }
       
       
       
       @Test
       public void testcase01_MongoDB2json() throws Exception {
       
            //实例化Mongo对象,连接27017端口
            MongoClient mongo = new MongoClient("localhost", 27017);
                                   //连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
                for (String s : mongo.getDatabaseNames()) { 
                System.out.println(s); 
                } 
           
            DB db = mongo.getDB("ynt-db");
            
                
                Set<String> collections = db.getCollectionNames();
              for(String collectionName:collections){
              System.out.println(collectionName);
              }
              
                // Get collection from MongoDB, database named "yourDB"
                //从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
                DBCollection collection = db.getCollection("yourCollection");
                
         BasicDBObject searchQuery = new BasicDBObject();
               searchQuery.put("id", 1002);
               // 使用collection的find方法查找document
               DBCursor cursor = collection.find(searchQuery);
               
       
       
       JSONObject  dataJson=new JSONObject(String.valueOf(cursor.next()));
    System.out.println(dataJson);
       
    //JSONObject  response=dataJson.getJSONObject("msg");
    //JSONArray data=response.getJSONArray("data");
    //JSONObject info=data.getJSONObject(0);
    String province=dataJson.getString("msg");
    String city=dataJson.getString("id");
    String district=dataJson.getString("_id");
    System.out.println(province+city+district);
     
     
       }
    }

    mongodb mongo

    使用mongoDB需要导入以下类,当然不是全部需要,用到的类就导入。  
    import com.mongodb.Mongo;  
    import com.mongodb.DB;  
    import com.mongodb.DBCollection;  
    import com.mongodb.BasicDBObject;  
    import com.mongodb.DBObject;  
    import com.mongodb.DBCursor;  
    import com.mongodb.ObjectId;  
    
    类转换  
    当把一个类对象存到mongoDB后,从mongoDB取出来时使用setObjectClass()将其转换回原来的类。  
    public class Tweet implements DBObject {  
        /* ... */  
    }  
    Tweet myTweet = new Tweet();  
    myTweet.put("user", "bruce");  
    myTweet.put("message", "fun");  
    myTweet.put("date", new Date());  
    collection.insert(myTweet);  
    //转换  
    collection.setObjectClass(Tweet);  
    Tweet myTweet = (Tweet)collection.findOne();  
    
    默认ID  
    当保存的对象没有设置ID时,mongoDB会默认给该条记录设置一个ID("_id")。  
    当然你也可以设置自己指定的ID,如:(在mongoDB中执行用db.users.save({_id:1,name:'bruce'});)  
    BasicDBObject bo = new BasicDBObject();  
    bo.put('_id', 1);  
    bo.put('name', 'bruce');  
    collection.insert(bo);  
    
    权限  
    判断是否有mongoDB的访问权限,有就返回true,否则返回false。  
    boolean auth = db.authenticate(myUserName, myPassword);  
    
    查看mongoDB数据库列表  
    Mongo m = new Mongo();  
    for (String s : m.getDatabaseNames()) {  
    System.out.println(s);  
    }  
    
    
    查看当前库下所有的表名,等于在mongoDB中执行show tables;  
    Set<String> colls = db.getCollectionNames();  
    for (String s : colls) {  
    System.out.println(s);  
    }  
    
    查看一个表的索引  
    List<DBObject> list = coll.getIndexInfo();  
    for (DBObject o : list) {  
    System.out.println(o);  
    }  
    
    删除一个数据库  
    Mongo m = new Mongo();  
    m.dropDatabase("myDatabaseName");  
    
    建立mongoDB的链接  
    Mongo m = new Mongo("localhost", 27017);  
    DB db = m.getDB("myDatabaseName"); //相当于库名  
    DBCollection coll = db.getCollection("myUsersTable");//相当于表名  
    
    #查询数据  
    查询第一条记录  
    DBObject firstDoc = coll.findOne();  
    findOne()返回一个记录,而find()返回的是DBCursor游标对象。  
    
    查询全部数据  
    DBCursor cur = coll.find();  
    while(cur.hasNext()) {  
    System.out.println(cur.next());  
    }  
    
    查询记录数量  
    coll.find().count();  
    coll.find(new BasicDBObject("age", 26)).count();  
    
    设置条件查询  
    BasicDBObject condition = new BasicDBObject();  
    condition.put("name", "bruce");  
    condition.put("age", 26);  
    coll.find(condition);  
    
    查询部分数据块  
    DBCursor cursor = coll.find().skip(0).limit(10);  
    while(cursor.hasNext()) {  
    System.out.println(cursor.next());  
    }  
    
    比较查询(age > 50)  
    BasicDBObject condition = new BasicDBObject();  
    condition.put("age", new BasicDBObject("$gt", 50));  
    coll.find(condition);  
    比较符  
    "$gt": 大于  
    "$gte":大于等于  
    "$lt": 小于  
    "$lte":小于等于  
    "$in": 包含  
    //以下条件查询20<age<=30  
    condition.put("age", new BasicDBObject("$gt", 20).append("$lte", 30));  
    
    #插入数据  
    批量插入  
    List datas = new ArrayList();  
    for (int i=0; i < 100; i++) {  
    BasicDBObject bo = new BasicDBObject();  
    bo.put("name", "bruce");  
    bo.append("age", i);  
    datas.add(bo);  
    }  
    coll.insert(datas);  
    
    正则表达式  
    查询所有名字匹配 /joh?n/i 的记录  
    Pattern pattern = Pattern.compile("joh?n", CASE_INSENSITIVE);  
    BasicDBObject query = new BasicDBObject("name", pattern);  
    DBCursor cursor = coll.find(query);
  • 相关阅读:
    [转]MYSQL5.7版本sql_mode=only_full_group_by问题
    [坑]Linux MySQL环境表名默认区分大小写
    [转]CentOS 7.3 安装MySQL
    [转]Oracle截取字符串相关函数
    服务相关
    CSRF攻击
    sqlalchemy——多表操作
    sqlalchemy——基本操作
    高可用——网站运行监控
    高可用——软件质量保证
  • 原文地址:https://www.cnblogs.com/duanxz/p/4512269.html
Copyright © 2011-2022 走看看