7 加入多種文檔
爲了做更多有趣的查詢試驗,讓我們向集合中加入多種文檔類型,象:
{
"i" : value
}
可以通過循環來實現
for(int i = 0; i < 100; i++){
coll.insert(new BasicDBObject().append("i", i));
}
注意我們可以在一個集合中插入不同類型的文檔,這就是我們所說的“模式自由”(schema-free)。
8 統計文檔數量
使用getCount()方法
System.out.println(coll.getCount());
9 使用光標(cursor)來獲取全部文檔
爲了獲取集合中的所有文檔,我們可以使用find()方法。這個方法返回一上DBCursor對象,來允許我們將符合查詢條件的文檔迭代
出來。
DBCursor cur = coll.find();
while(cur.hasNext()){
System.out.println(cur.next());
}
10 在查詢中獲取單一文檔
我們可以創建一個查詢,並傳遞給find()方法來獲取集合中所有文檔的一個子集。例如,我們想要查詢域名爲"i",並且值爲71的文檔:
BasicDBObject query = new BasicDBObject();
query.put("i", 71);
cur = coll.find(query);
while(cur.hasNext()){
System.out.println(cur.next());
}
11 使用條件查詢獲取集合
例如,我們想要查詢所有i>50的文檔:
BasicDBObject query = new BasicDBObject();
query.put("i", new BasicDBObject("$gt", 50));
cur = coll.find(query);
while(cur.hasNext()){
System.out.println(cur.next());
}
當然,我們也可以做20 < i <= 30的查詢
BasicDBObject query = new BasicDBObject();
query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30));
cur = coll.find(query);
while(cur.hasNext()){
System.out.println(cur.next());
}
12 創建索引
MongoDB支持索引,而且很容易在集合上增加索引。要創建索引,只需要指定要加索引的屬性,並且指定升序(1)或降序即可(-1)。
coll.createIndex(new BasicDBObject("i", 1));
13 獲取索引列表
List<DBObject> list = coll.getIndexInfo();
for(DBObject o : list){
System.out.println(o);
}
14 MongoDB管理函數
管理函數在com.mongodb.MongoAdmin類中定義。
例A:獲取數據庫列表
MongoAdmin admin = new MongoAdmin();
for(String s : admin.getDatabaseNames()){
System.out.println(s);
}
例B:獲取數據庫對象
Mongo m = admin.getDB("mydb");
例C:刪除數據庫
admin.dropDatabase("mydb");
15 用DBObject存儲JAVA對象
MongoDB for JAVA驅動中提供了用於向數據庫中存儲普通對象的接口DBObject
例如,存在一個需要存儲的對象類Tweet
public class Tweet implements DBObject{
/*...*/
}
可以使用如下代碼:
Tweet myTweet = new Tweet();
myTweet.put("user", userId);
myTweet.put("message", message);
myTweet.put("date", new Date());
collection.insert(myTweet);
當一個文檔從MongoDB中取出時,它會自動把文檔轉換成DBObject接口類型,要將它實例化爲你的對象,需使用
DBCollection.setObjectClass()。
collection.setObjectClass(Tweet);
Tweet myTweet = (Tweet)collection.findOne();
16 JAVA驅動的併發性
JAVA的MongoDB驅動是線程安全的。如果你將它用在WEB服務中,可以創建它的一個單例,並在所有請求中使用它。
然而,如果你需要在一個會話(例如HTTP請求)中保證事務一致性,也許你會希望在這個會話中對驅動使用同一個端口。這僅僅在
請求量非常大的環境中,例如你經常會讀取剛寫入的數據。
爲了這一點,你需要使用如下代碼:
Mongo m;
m.restartStart();
// code.........
m.requestDone();
以上介紹了簡單的mongoDB使用,更多信息請查閱MongoDB API for Java。
官方主頁:http://www.mongodb.org/display/DOCS/Home
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lolinzhang/archive/2009/07/16/4353699.aspx
MongoDB 簡介2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.