java操作mongodb

代码1:

package com.ooooo.mongo;
 
import java.net.UnknownHostException;
import java.util.Set;
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
 
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
 
public class JavaMongoDBTest {
 
/**
* Java + MongoDB Hello world Example
* 
*/
 
   public static void main(String[] args) {
       try {
           //实例化Mongo对象,连接27017端口
       MongoClient mongo = new MongoClient("localhost", 27017);
                              //连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
           DB db = mongo.getDB("ytn-db");
           // Get collection from MongoDB, database named "yourDB"
//从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
           DBCollection collection = db.getCollection("yourCollection");
   // 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
           BasicDBObject document = new BasicDBObject();
           document.put("id", 1002);
           document.put("msg", "hello world mongoDB in Java---ytan");
           document.put("msg23", "hello world mongoDB in Java---yian--002");
           document.put("msg23111", "hello world mongoDB in Java---yun--002");
 
           //将新建立的document保存到collection中去
           collection.insert(document);
           // 创建要查询的document
           BasicDBObject searchQuery = new BasicDBObject();
           searchQuery.put("id", 1002);
           // 使用collection的find方法查找document
           DBCursor cursor = collection.find(searchQuery);
           //循环输出结果
           while (cursor.hasNext()) {
           System.out.println(cursor.next());
 
           
           }
           System.out.println("Done"); 
       } catch (UnknownHostException e) {
           e.printStackTrace();
       } catch (MongoException e) {
           e.printStackTrace();
       }
   }
   
   
   
   @Test
   public void testcase01_MongoDB2json() throws Exception {
   
        //实例化Mongo对象,连接27017端口
        MongoClient mongo = new MongoClient("localhost", 27017);
                               //连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
            for (String s : mongo.getDatabaseNames()) { 
            System.out.println(s); 
            } 
       
        DB db = mongo.getDB("ynt-db");
        
            
            Set<String> collections = db.getCollectionNames();
          for(String collectionName:collections){
          System.out.println(collectionName);
          }
          
            // Get collection from MongoDB, database named "yourDB"
            //从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
            DBCollection collection = db.getCollection("yourCollection");
            
     BasicDBObject searchQuery = new BasicDBObject();
           searchQuery.put("id", 1002);
           // 使用collection的find方法查找document
           DBCursor cursor = collection.find(searchQuery);
           
   
   
   JSONObject  dataJson=new JSONObject(String.valueOf(cursor.next()));
System.out.println(dataJson);
   
//JSONObject  response=dataJson.getJSONObject("msg");
//JSONArray data=response.getJSONArray("data");
//JSONObject info=data.getJSONObject(0);
String province=dataJson.getString("msg");
String city=dataJson.getString("id");
String district=dataJson.getString("_id");
System.out.println(province+city+district);
 
 
   }
}

mongodb mongo

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

正则表达式  
查询所有名字匹配 /joh?n/i 的记录  
Pattern pattern = Pattern.compile("joh?n", CASE_INSENSITIVE);  
BasicDBObject query = new BasicDBObject("name", pattern);  
DBCursor cursor = coll.find(query);

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。