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(); } } }