javase操作mongodb 基础API模式 mongodb
最新版的驱动包 mongodb-driver-3.8.1.jar
下载地址:https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver/3.8.1/
连接MongoDB服务
MongoClient mongo = new MongoClient("192.168.1.106",27017);
说明:MongoClient内部实现了一个连接池,默认初始化10个连接,MongoClient对象是线程安全的,因此可以只创建一个,在多线程环境下安全使用。
另外要注意,close方法将关闭当前所有活跃的连接,所以应该在确定不再使用MongoDB的时候才应该关闭
连接池的配置,可以修改连接池的默认配置,方法是:
1:先创建MongoClientOptions对象
2:设置该对象里面的属性值,常见的有:
(1)connectionsPerHost:每个主机的连接数
(2)threadsAllowedToBlockForConnectionMultiplier:线程队列数,它与connectionsPerHost值相乘的
结果就是线程队列最大值。如果连接线程满了,就会抛出“Out of semaphores to get db”错误。
(3)maxWaitTime:最大等待连接的线程阻塞时间
(4)connectTimeout:连接超时的毫秒。默认是0,表示不超时
(5)socketTimeout:socket超时。默认是0,表示不超时
(6)autoConnectRetry:控制是否在一个连接出问题时,系统会自动重试
3:然后再连接MongoDB,此时加入选项参数即可连接到MongoDB数据库,示例
DB db = mongo.getDB("mydb");
注意:
1:数据库名区分大小写,另外如果数据库不存在,不会报错,而是新建一个
2: DB对象代表了和数据库的一个连接。默认情况下,当执行完数据库的查询或者更新操作后,连接将自动回到连接池中。不需要我们手动调用代码放回池中。
获取要操作的集合:
DBCollection users = db.getCollection("users");
新增文档操作:
1:第一种方式,示例:
BasicDBObjectdata1 = new BasicDBObject();
data1.put("userId", "u1234"); data1.put("name", "name123");
//或者 data1.append("userId", "u1234").append("name", "name123");
users.insert(data1);//或者users.save(data1);
2:第二种方式,示例:
BasicDBObjectBuilder data1
=BasicDBObjectBuilder.start().add("userId","u234").add("name","name234");
users.insert(data1.get());
3:第三种方式,示例:
Map<String, Object> data1 = new HashMap<String, Object>();
data1.put("userId","u345");
users.insert(new BasicDBObject(data1));
4:第四种方式,示例:
String json = "{'userId': 'u456','name' : 'name456'}";
DBObject data1 = (DBObject)JSON.parse(json);
users.insert(data1);
删除
users.remove(new BasicDBObject("userId","u1"));
修改
DBObject condition = new BasicDBObject("userId","u234");
users.update(condition, new BasicDBObject("userId","cc").append("name","cc"));
使用修改器:
users.update(condition, new BasicDBObject("$set",new
BasicDBObject("name","ccNew")));
简单的查询
1:查询全部数据
DBCursor dbCursor = users.find();
while(dbCursor.hasNext()){
System.out.println(dbCursor.next());
}
2:查询第一个文档
users.findOne();
3:带条件查询,还可以限制返回的记录数
DBObject condition = new BasicDBObject("userId","u1234");
DBCursor dbCursor = users.find(condition).limit(5);
又比如:查询userId大于等于u1的数据,并按照userId降序排列:
DBObject condition = new BasicDBObject("userId",new BasicDBObject("$gte","u1"));
DBCursor dbCursor = users.find(condition).sort(new BasicDBObject("userId",-1));
如果要分页,在后面加上skip和limit,如:
users.find(condition).sort(new BasicDBObject("userId",-1)).skip(1).limit(2);
4:约束要返回的字段,如:
users.find(condition,new BasicDBObject("userId",1).append("_id",0));
其他API说明
1:创建集合,示例:db.createCollection("mycol");
2:授权认证,示例:boolean auth = db.authenticate(userName, pwd);
3:查找并删除的方法:collection.findAndRemove
4:获取所有数据库的名字的方法:mongo.getDatabaseNames()
5:获取所有集合的名字的方法:db.getCollectionNames();
6:在一个连接上执行多个操作,可以用:db.requestStart(); 结束的时候用 db.requestDone();
如有疑问 请留言 欢迎提供建议
评论已有 0 条