好文档 - 专业文书写作范文服务资料分享网站

MongoDB实操指南 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

5.2增加文档

我们使用insertOne方法来插入文档。

示例:添加文档记录--名称:铁扇公主 性别:女 年龄:28 地址:芭蕉洞 //获取连接 MongoClient client=new MongoClient(); //得到数据库 MongoDatabase database = client.getDatabase(\); //得到集合封装对象 MongoCollection collection = database.getCollection(\); Map map=new HashMap(); map.put(\, \铁扇公主\); map.put(\, \女\); map.put(\, 35.0); map.put(\, \芭蕉洞\); Document doc=new Document(map); collection.insertOne(doc);//插入一条记录 //collection.insertMany(documents);//一次性插入多条文档 5.3删除文档

示例:将名称为铁扇公主的文档删除 //获取连接 MongoClient client=new MongoClient(); //得到数据库 MongoDatabase database = client.getDatabase(\); //得到集合封装对象 MongoCollection collection = database.getCollection(\); BasicDBObject bson=new BasicDBObject(\, \铁扇公主\); collection.deleteOne(bson);//删除记录(符合条件的第一条记录) //collection.deleteMany(bson);//删除符合条件的全部记录 5.4修改文档

示例:将红孩儿的地址修改为“南海” //获取连接 MongoClient client=new MongoClient(); //得到数据库 MongoDatabase database = client.getDatabase(\); //得到集合封装对象 MongoCollection collection = database.getCollection(\);

//修改的条件 BasicDBObject bson= new BasicDBObject(\, \红孩儿\); //修改后的值 BasicDBObject bson2 = new BasicDBObject(\,new BasicDBObject(\, \南海\)); //参数1:修改条件 参数2:修改后的值 collection.updateOne(bson, bson2); //collection.updateMany(filter, update);//修改符合条件的所有记录 updateMany方法用于修改符合条件的所有记录 updateOne方法用于修改符合条件的第一条记录

6.MongoDB连接池

6.1代码实现

MongoClient 被设计为线程安全的类,也就是我们在使用该类时不需要考虑并发的情况,这样我们可以考虑把MongoClient 做成一个静态变量,为所有线程公用,不必每次都销毁。这样可以极大提高执行效率。实际上,这是MongoDB提供的内置的连接池来实现的。 首先我们先创建一个“管理类”,相当于我们原来的BaseDao package cn.itcast.demo; import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoClientOptions.Builder; import com.mongodb.WriteConcern; import com.mongodb.client.MongoDatabase; public class MongoManager { } private static MongoClient mongoClient=null; //对mongoClient初始化 private static void init(){ } public static MongoDatabase getDatabase(){ } if(mongoClient==null){ } init(); mongoClient=new MongoClient(); return mongoClient.getDatabase(\);

然后我们创建一个StudentDao

package cn.itcast.demo; import org.bson.Document; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; /** * 学员数据访问层 * @author Administrator * */ public class StudentDao { } public void save(String name,String sex,double age,String address){ } MongoDatabase database = MongoManager.getDatabase(); MongoCollection collection = database.getCollection(\); Document docment=new Document(); docment.put(\, name); docment.put(\, sex); docment.put(\, age); docment.put(\, address); collection.insertOne(docment); 我们现在做个测试,循环插入2万条数据,看看执行时间是多长时间

package cn.itcast.demo; import java.util.Date; public class TestPool { } public static void main(String[] args) { } long startTime = new Date().getTime();//开始时间 StudentDao studentDao=new StudentDao(); for(int i=0;i<20000;i++){ } long endTime = new Date().getTime();//完成时间 System.out.println(\完成时间:\+(endTime-startTime)+\毫秒\); studentDao.save(\测试\+i, \男\, 25.0, \测试地址\+i); 经过测试:所用毫秒数为3589

6.2参数设置

我们在刚才的代码基础上进行连接池参数的设置 修改MongoManager的init方法 //对mongoClient初始化 private static void init(){ } //连接池选项 Builder builder = new MongoClientOptions.Builder();//选项构建者 builder.connectTimeout(5000);//设置连接超时时间 builder.socketTimeout(5000);//读取数据的超时时间 builder.connectionsPerHost(30);//每个地址最大请求数 MongoClientOptions options = builder.build(); mongoClient=new MongoClient(\,options); builder.writeConcern(WriteConcern.NORMAL);//写入策略,仅抛出网络异常 再次进行测试:所用的毫秒1544

下面是写入策略。

WriteConcern.NONE:没有异常抛出

WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常

WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。

WriteConcern.MAJORITY: 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。 WriteConcern.FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。 WriteConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。

WriteConcern.REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。

7.综合案例-《网站点击日志分析组件》

7.1需求分析

《花生二手车》交易网站日访问IP高达2万+ ,每秒点击频率在2000次左右。为了能够对访问用户的行为做进一步的分析,产品部提出需求,用户每次点击浏览二手车都要记录该用户ID、访问IP、访问时间、点击车型、点击商品ID、价格等信息。

7.2数据库设计

浏览日志browseLog 字段名称 userid ip browseTime model goodsid price remark 字段类型 字符 字符 时间 字符 字符 数值 字符 字段含义 用户ID 访问IP 访问时间 点击车型 点击商品ID 价格 备注 7.3日志写入

(1)创建工程sitelog ,在pom.xml中引入依赖。

org.mongodb mongodb-driver 3.4.1

(2)在src/main/resources 添加配置文件sitelog.properties host=127.0.0.1 port=27017 这个配置文件用于配置主机地址和端口

(3)创建包com.huasheng.sitelog,建立Config 类,用于读取配置文件

MongoDB实操指南 - 图文 

5.2增加文档我们使用insertOne方法来插入文档。示例:添加文档记录--名称:铁扇公主性别:女年龄:28地址:芭蕉洞//获取连接MongoClientclient=newMongoClient();//得到数据库MongoDatabasedatabase=client.getDatabase(\);//得到集合封装对象M
推荐度:
点击下载文档文档为doc格式
612j65wqsi0088t3x4ji0cqsi0v0jd00p3w
领取福利

微信扫码领取福利

微信扫码分享