本篇文章给大家分享的是有关使用MongoDB怎么实现问卷/考试设计功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
<强> MongoDB的特点强>
MongoDB是一个面向文档存储的数据库。在MongoDB中,一条记录叫做文档(文档),由类似于JSON结构的键值对组成只
由于类似于MongoDB直接存储JSON的特性,MongoDB天生适合作为存储结构复杂的数据结构的介质。类似于问卷调查和考试这种需求,用mysql这种关系型数据库实现起来太过复杂、效率低下;而如果使用MongoDB来实现的话,则会发现异常清晰简单。
<强>需求分析强>
在一张试卷中,会有很多个问题,问题的类型大体上可以分为单选的题,多选题,判断题,简答题等。每一个问题又会有很多个选项,选项可以是文字描述也可以是图片又或者图文结合。
那么一张试卷的JSON格式应该大体上长成这样:
当然这只是最简单的数据结构,要完成一张试卷,还需要加入更多的属性。
<强>结构设计强>
我们采用自底向上的结构设计方式,先对每个选项的数据结构进行设计。
<强>选项设计强>
public class Option {/* * *,才能选项类型 ,*/,private Integer oType =, 1;/* * *,才能选项内容 ,*/,private String 文本; ,/* * *,才能选项图片 ,*/,private String  img;/* * *,才能是否正确答案 ,*/,private Boolean ;/* * *,才能用户是否选择 ,*/,private Boolean 选择; ,……
选项类型<代码> oType> 代码用来标志选项是普通文本还是图片或者图文;<代码>对代码>用来标志这个选项是否是正确答案,用于自动判卷;<代码> 代码>用选择来标志用户有没有选择这个答案。
<强>问题设计强>
public class Question extends MongoBean {/* * *,才能数据的id ,*/,private String  dataId;/* * *,才能题目类型,1判断题;2单选题;3多选题 ,*/,private Integer  qType;/* * *,才能题目标题 ,*/标题,private String ;/* * *,才能题目选项 ,*/,private List
dataId用于将这个问题同一个业务数据绑定,数据类型用来标志这个业务数据的类型,这两个字段方便数据的扩展;dataTitle是业务数据的标题,选项是这个问题的选项,分析问题的解析,用于用户答题结束后的自查;正确用来记录问题的正确与否。
<强>新增问题强>
<强>上层接口强>
提供新增问题的接口:
@PostMapping (“/saveOrUpdateQuestion") public JsonData  saveOrUpdateQuestion (@RequestBody Question 数据),{ ,questionService.saveOrUpdateQuestion(数据); ,return JsonData.success (); }
QuestionService:
public void saveOrUpdateQuestion (Question 数据),{ ,if (StringUtils.isEmpty (data.getId())),{//,新增 writer.insert才能(manager.getExamDataBase (),, ExamConstant.QUESTION_COLLECT,,数据); ,}else {//修改 writer.updateDocument才能(数据,ExamConstant.QUESTION_COLLECT); ,} }
刀
作者:
public void 插入(String 数据库,String 收集、,MongoBean 数据),{ ,if (data.getId (),==, null), { data.setId才能(BsonTool.uuid ()); ,} ,MongoCollectioncollection =, getCollection(数据库,收集); ,collection.insertOne (Document.parse (JSONObject.toJSONString(数据))); } public Document  updateDocument (MongoBean 数据,String questionCollect), { ,Document filter =, new 文档(); ,filter.put (“id", data.getId ()); ,Document res =, new 文档(); ,res.put (“set"美元;,,BsonDocument.parse (JSONObject.toJSONString(数据))); ,更新(manager.getExamDataBase (),, questionCollect,,过滤器,,res); ,return res; } public boolean 更新(String 数据库,String 收集、,Bson 过滤,Bson 更新),{ ,MongoCollection 使用MongoDB怎么实现问卷/考试设计功能