mongodb 常用API

MongoDB常用API總結

Ø  類轉換

當把一個類對象存到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.class);

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中執行showtables;

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

又如:

DBCollection coll = db.getCollection("testCollection");  

for(int i=1; i<=100; i++) {//插入100條記錄  

    User user = new User();  

   user.setName("user_"+i);  

    user.setPoint(i);  

    coll.insert(user);

}  

Ø  正則表達式

查詢所有名字匹配 /joh?n/i 的記錄

Pattern pattern = Pattern.compile("joh?n",CASE_INSENSITIVE);

BasicDBObject query = new BasicDBObject("name", pattern);

DBCursor cursor = coll.find(query);

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章