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