学习MongoDB(二)——用Java对数据库进行增删改查

MongoDB已经支持很多种语言的数据访问,官方提供的API参考 http://www.mongodb.org/display/DOCS/Drivers

值得一提的是还有JavaScript的访问API,当然是在服务器端用JavaScript来访问MongoDB数据库,必然就得利用Node.js了。

下载Java的驱动Jar包:https://github.com/mongodb/mongo-java-driver/downloads

Java的API在线文档地址:http://api.mongodb.org/java/2.9.1/

官网给出的Java的操作指导:http://www.mongodb.org/display/DOCS/Java+Tutorial

这里列出基本的CRUD的示例代码:

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;

public class RemoteMongoTest {

	private static Mongo m; 
	private static void CreateMethod(){
		 DB db = m.getDB("newtest");//不存在会自动创建  
		 
         DBCollection col = db.getCollection("col");//不存在会自动创建  
         System.out.println("当前数据库下的集合列表:"+db.getCollectionNames()); //所有有数据的集合名称
        
         //向集合中插入数据,不用考虑数据重复,因为mongodb会为每个数据对象指定一个不同的ObjectId
         BasicDBObject val = new BasicDBObject(); 
         val.put("name", "Kaka2"); 
         //col.insert(val); 
         col.save(val); 
         
         //不同数据对象的字段也不必一样
         val = new BasicDBObject();  
         val.put("name2", "C.R");
         val.put("nickname", "C.R");
         col.insert(val); 
         //col.save(val); 
	}
	private static void ReadMethod(){
		DB db = m.getDB("newtest");      
        DBCollection col = db.getCollection("col");
		
		//取得所有数据并打印出来 
        DBCursor ite = col.find(); //这儿也能像下面findone函数一样加限定条件
        while(ite.hasNext()) 
        { 
            System.out.println(ite.next()); 
        }   
        
        System.out.println("///");
        
        //类似sql语句:select top 1 * from col where name='Kaka';
        DBObject oners = col.findOne(new BasicDBObject("name","Kaka"));
        System.out.println(oners);
        
        //类似sql语句:select top 1 name2,nickname from col where name2='C.R';
        oners = col.findOne(new BasicDBObject("name2","C.R"),
        				   (BasicDBObject)(new BasicDBObject("nickname","").put("name2", ""))
        					);
        System.out.println(oners);
	}
	private static void UpdateMethod(){
		DB db = m.getDB("newtest");      
        DBCollection col = db.getCollection("col");
        
        DBObject temp = col.findAndModify(new BasicDBObject("name","Kaka"), 
        				 (BasicDBObject)(new BasicDBObject("name","CZ"))
        				 );
        System.out.println(temp);//返回更改之前的数据对象
        
        //类似sql语句:update col set name='dl' where name='kaka2'
        col.update(new BasicDBObject("name","kaka2"), new BasicDBObject("name","dl"));
        //一次更新多条数据不管用
        //col.update(new BasicDBObject("name2","C.R"), new BasicDBObject("nickname","soso"),false,true);
        //col.updateMulti(new BasicDBObject("name2","C.R"), new BasicDBObject("nickname","soso"));
        
        DBCursor ite = col.find(); 
        while(ite.hasNext()) 
        { 
            System.out.println(ite.next()); 
        }   
	}
	private static void DeleteMethod(){
		DB db = m.getDB("newtest");      
        DBCollection col = db.getCollection("col");
        
        //类似sql语句:delete from col where name2='C.R';
        col.remove(new BasicDBObject("name2","C.R"));
        col.findAndRemove(new BasicDBObject("name","Kaka"));//返回删除之前的数据对象
        
        DBCursor ite = col.find(); 
        while(ite.hasNext()) 
        { 
            System.out.println(ite.next()); 
        }  
        
        //col.drop();//删除数据集合
        //db.dropDatabase();//删除数据库
	}
	
	
	public static void main(String[] args) {
		try{ 
			m = new Mongo("192.168.1.193");//默认的port就是27017 这里是连接另外一台Mac笔记本上的mongo数据库
			System.out.println("数据库列表:"+m.getDatabaseNames());  //所有有数据的数据库名称
			CreateMethod();
			//ReadMethod();
			//UpdateMethod();
			//DeleteMethod();
        }catch(Exception error) 
        { 
            error.printStackTrace(); 
        } 
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值