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