天天看點

[mongodb]java操作mongodb

使用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) { 

檢視一個表的索引 

List<DBObject> list = coll.getIndexInfo(); 

for (DBObject o : list) { 

System.out.println(o); 

删除一個資料庫 

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) 

condition.put("age", new BasicDBObject("$gt", 50)); 

比較符 

"$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++) { 

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);

下載下傳次數: 146