请通过浏览器功能收藏网页

javase操作mongodb 基础API模式 mongodb

发布时间:2018-09-11 15:43:01  作者:本站编辑  来源:本站原创  浏览次数:
我有话说 | 分享 |
www.javainfo.com.cn 上干货 欢迎收藏

最新版的驱动包 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

    开心

  • 0

    板砖

  • 0

    感动

  • 0

    有用

  • 0

    疑问

  • 0

    难过

  • 0

    无聊

  • 0

    震惊

评论已有 0