在项目开发过程中,不免用到nosql数据库,mongoDB是最常用的数据库之一。mongoDB是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
问题
mongoDB自身的安全机制,默认normal,insert 不会返回结果。update 、remove操作返回的结果是mongo刷新到内存的结果,并不是真实的结果。仅仅跑出网络错误异常,不会抛出服务器错误异常
解决方案
修改安全级别。
WriteConcern的几种抛出异常的级别参数:
WriteConcern.NONE:没有异常抛出
WriteConcern.NORMAL:仅抛出网络错误异常,没有服务器错误异常
WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
WriteConcern.MAJORITY: 抛出网络错误异常、服务器错误异常;并等待一个主服务器完成写操作。
WriteConcern.FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
WriteConcern.JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
WriteConcern.REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。
springDataMongo中可以通过mongoTemplate设置安全级别:
mongoTemplate.setWriteConcern(WriteConcern.SAFE);