標籤:
代碼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); Regex 查詢所有名字匹配 /joh?n/i 的記錄 Pattern pattern = Pattern.compile("joh?n", CASE_INSENSITIVE); BasicDBObject query = new BasicDBObject("name", pattern); DBCursor cursor = coll.find(query);
java操作mongodb