Java操作MongoDB數據庫
1)、 建立MongoDBTest.java,完成簡單的mongoDB數據庫操作
Mongo mongo = new Mongo('127.0.0.1', 27017);
Mongo mongo = new Mongo();
這樣就創建了一個MongoDB的數據庫連接對象,它默認連接到當前機器的localhost地址,端口是27017。
2)、連接數據庫test
DB db = mongo.getDB(“test”);
這樣就獲得了一個test的數據庫,如果mongoDB中沒有創建這個數據庫,mongoDB會自動創建當前數據庫。
得到了db,下一步我們要獲取一個“聚集集合DBCollection”,通過db對象的getCollection方法來完成。
DBCollection users = db.getCollection(“users”);
這樣就獲得了一個DBCollection,它相當于我們數據庫的“表”。
3)、接下來就可以進行增刪改查操作
MongoURI uri = new MongoURI("mongodb://localhost:27017");
String databaseName ="myDatabase";
String collectionName = "mycollections";
Mongo mongo = null;
DB db = null;
DBCollection userCollection;
try {
定義Mongo服務
mongo =new Mongo("localhost", 27017);
mongo = new Mongo(uri);
mongo = new Mongo();
DBAddress addr = new DBAddress("localhost", 27017,databaseName);
mongo.connect(addr);
刪除數據庫
mongo.dropDatabase(databaseName);
獲取databaseName對應的數據庫,不存在則自動創建
db = mongo.getDB(databaseName);
添加用戶
db.addUser("admin", new char []{'a','d','m','i','n'});
移除用戶
db.removeUser("admin");
驗證權限
boolean flag = db.authenticate("admin", new char []{'a','d','m','i','n'} );
if(flag == false){
return;
}
設置db為只讀 ,只讀就不能寫入數據了 對save管用,對insert好像不管用
db.setReadOnly(true);
獲取collectionName對應的集合,不存在則自動創建
db.createCollection("mycollection", new BasicDBObject());
userCollection = db.getCollection(collectionName);
查詢所有的DataBase
for(String dbName : mongo.getDatabaseNames()){
System.out.println("databasename:" + dbName);
}
查詢所有的聚集集合
for(String collection :db.getCollectionNames()){
System.out.println("collectionName:" + collection);
}
查詢是否存在collectionName集合
if(db.collectionExists(collectionName)){
//去掉重復的數據
List dislist = userCollection.distinct("userId");
int len = dislist.size();
for(int i = 0 ; i< len ; i++){
System.out.println(dislist.get(i));
}
查詢
System.out.println(userCollection.find(new BasicDBObject("userId",1)).toArray());
返回前2個
System.out.println(userCollection.find({},{reviews:{slice:2}}); //System.out.println("分頁:"+userCollection.find(new BasicDBObject("",new BasicDBObject("slice", 2))).toArray());
查詢所有的數據
DB游標
DBCursor cursor = userCollection.find();
while(cursor.hasNext()){
DBObject userDbobj = cursor.next(); System.out.println("userId:"+userDbobj.get("userId")+";age:"+userDbobj.get("age")+";sex:"+userDbobj.get("sex")+";address:"+userDbobj.get("address"));
}
條件查詢
查詢age 等于 24
System.out.println("find age = 24: " + userCollection.find(new BasicDBObject("age", 24)).toArray());
查詢age 大于等于 24
System.out.println("find age >= 24: " + userCollection.find(new BasicDBObject("age", new BasicDBObject("gte",24))).toArray());
查詢age小于等于24 System.out.println("findage<=24:"+userCollection.find(newBasicDBObject("age",newBasicDBObject("lte", 24))).toArray());
查詢age 不等于25
System.out.println("查詢age!=25:" + userCollection.find(new BasicDBObject("age", new BasicDBObject("$ne", 25))).toArray());
查詢某個范圍的數據
System.out.println("查詢age in 25/26/27:" + userCollection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN, new int[] { 25, 26, 27 }))).toArray());
查詢不在某個范圍數據
System.out.println("查詢age not in 25/26/27:" + userCollection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.NIN, new int[] { 25, 26, 27 }))).toArray());
按age排序
System.out.println("查詢age exists 排序:" + userCollection.find().sort(new BasicDBObject("age",new BasicDBObject(QueryOperators.ORDER_BY, 1))).limit(2).skip(1).toArray()); //(new BasicDBObject("age", new BasicDBObject(QueryOperators.ORDER_BY, 1))).toArray());
new BasicDBObject();
System.out.println("只查詢age屬性:" + userCollection.find(null, new BasicDBObject("age", true)).toArray());
System.out.println("只查屬性:" + userCollection.find(null, new BasicDBObject("age", true), 0, 2).toArray());
System.out.println("只查屬性:" + userCollection.find(null, new BasicDBObject("age", true), 0, 2, Bytes.QUERYOPTION_NOTIMEOUT).toArray());
}
添加數據
DBObject user = new BasicDBObject();
user.put("userId", 2);
user.put("userName", "tom");
user.put("age", 21);
user.put("sex", "male");
user.put("address", "北京海淀");
userCollection.save(user);
getN 對save和insert不管用
WriteResult saveResult = userCollection.save(user);
System.out.println(saveResult.getN());
System.out.println(saveResult.isLazy());
if(saveResult.getN() > 0){
System.out.println("添加成功");
}
添加List集合
List<DBObject> list = new ArrayList<DBObject>();
list.add(user);
DBObject user2 = new BasicDBObject();
user2.put("userId", 2);
user2.put("userName", "lily");
user2.put("age", 20);
user2.put("sex", "female");
user2.put("address", "新加坡");
list.add(user2);
userCollection.insert(list);
看是否插入成功
System.out.println("集合中數據量:" + userCollection.count());
刪除數據
WriteResult wr = userCollection.remove(new BasicDBObject("userId",1));
System.out.println(wr.getN());
System.out.println(wr.isLazy());
if(wr.getN() > 0){
System.out.println("刪除成功!");
}
刪除整個集合
userCollection.drop();
修改
DBObject newUser =new BasicDBObject();
newUser.put("userId", 3);
newUser.put("userName", "tomAndKitty");
newUser.put("age", 25);
user.put("sex", "male");
user.put("address", "北京朝陽");
WriteResult updateResult = userCollection.update(new BasicDBObject("userId",1),newUser);
WriteResult updateResult = userCollection.update(new BasicDBObject("userId",3),newUser,
關閉Mongo服務
if(mongo != null){
mongo.close();
}
db = null;
userCollection = null;
}
} 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!