3、查看oplog日志数据
这里我们一般会重视数据的变化,所以列出insert、update、delete示例
添加一条数据:
db.test.insert({"name":"这是一侧测试","age":"18"})oplog日志数据:
{"ts" : Timestamp(1588728789, 1),"h" : NumberLong(0),"v" : 2,"op" : "i","ns" : "runoob.test","o" : {"_id" : ObjectId("5eb213d5ce1474899c3a2482"),"name" : "这是一侧测试","age" : "18"}}修改:
db.test.update({"_id": ObjectId("5eb213d5ce1474899c3a2482")},{$set:{"name":"这是修改的测试","age":"20"}},false,true){"ts" : Timestamp(1588730210, 1),"h" : NumberLong(0),"v" : 2,"op" : "u","ns" : "runoob.test","o2" : {"_id" : ObjectId("5eb213d5ce1474899c3a2482")},"o" : {"$set" : {"name" : "这是修改的测试","age" : "20"}}}删除:
【数据实时同步之MongoDB】db.test.remove({"name" : "这是修改的测试"}){"ts" : Timestamp(1588730347, 1),"h" : NumberLong(0),"v" : 2,"op" : "d","ns" : "runoob.test","o" : {"_id" : ObjectId("5eb213d5ce1474899c3a2482")}}4.简单Java代码实现1、maven依赖引入
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.41</version></dependency><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.2.2</version></dependency>2、配置文件resource/mongo-config.properties
connectionsPerHost=10connectTimeout=10000cursorFinalizerEnabled=truemaxWaitTime=120000threadsAllowedToBlockForConnectionMultiplier=5readSecondary=falsesocketTimeout=0socketKeepAlive=falsewrite=0writeTimeout=0journal=falsehostConfString=127.0.0.1:27017userName=adminUseruseCollection=adminpassword=adminPass3、MongoDBUtil.java工具类
/** * @author wxb * @date 2019-10-12 11:26 */public class MongoDBUtil {private static MongoClient mongoClient;private static Properties properties;private static WriteConcern concern;static {try {InputStream inputStream = MongoDBUtil.class.getClassLoader().getResourceAsStream("mongo-config.properties");properties = new Properties();properties.load(inputStream);concern = new WriteConcern(Integer.parseInt(properties.getProperty("write")),Integer.parseInt(properties.getProperty("writeTimeout")));concern.withJournal(Boolean.valueOf(properties.getProperty("journal")));//读取journal参数值} catch (IOException e) {e.printStackTrace();}}/*** 初始化,返回客户端*/public static MongoClient initMongoHasUser() throws IOException {List<ServerAddress> adds = new ArrayList<>();String[] address = properties.getProperty("hostConfString").split(":");//读取服务IP地址和端口号ServerAddress serverAddress = new ServerAddress(address[0], Integer.valueOf(address[1]));adds.add(serverAddress);List<MongoCredential> credentials = new ArrayList<>();MongoCredential mongoCredential = MongoCredential.createScramSha1Credential(properties.getProperty("userName"),properties.getProperty("useCollection"),properties.getProperty("passWord").toCharArray());credentials.add(mongoCredential);MongoClientOptions options = MongoClientOptions.builder().connectionsPerHost(Integer.parseInt(properties.getProperty("connectionsPerHost"))).connectTimeout(Integer.parseInt(properties.getProperty("connectTimeout"))).cursorFinalizerEnabled(Boolean.valueOf(properties.getProperty("cursorFinalizerEnabled"))).maxWaitTime(Integer.parseInt(properties.getProperty("maxWaitTime"))).threadsAllowedToBlockForConnectionMultiplier(Integer.parseInt(properties.getProperty("threadsAllowedToBlockForConnectionMultiplier"))).socketTimeout(Integer.valueOf(properties.getProperty("socketTimeout"))).socketKeepAlive(Boolean.valueOf(properties.getProperty("socketKeepAlive"))).writeConcern(concern).build();if (adds.size() > 1){mongoClient = new MongoClient(adds, credentials, options);}else {mongoClient = new MongoClient(adds.get(0), credentials, options);}return mongoClient;}}4、MongoDBOpLog.java 集成了库验证、表查询、数据动态获取
4.1测试初始化客户端-持有数据库
public class MongoDBOpLog {private static MongoClient mongoClient;public static void main(String[] args) throws InterruptedException {initMongoClient();//获取local库MongoDatabase database = getDatabase("local");//监控库oplog.$mainMongoCollection<Document> runoob = getCollection(database, "oplog.$main");//处理dataProcessing(runoob);}private static void initMongoClient() {try {mongoClient = MongoDBUtil.initMongoHasUser();} catch (IOException e) {e.printStackTrace();}}public static MongoDatabase getDatabase(String dataBase) {if (!mongoClient.getDatabaseNames().contains(dataBase)) {throw new RuntimeException(dataBase + " no exist !");}MongoDatabase mongoDatabase = mongoClient.getDatabase(dataBase);return mongoDatabase;}
推荐阅读
- Nacos数据持久化到MySQL
- MySQL进阶之MySQL数据库整体架构设计
- 黑客入侵MongoDB数据库 被入侵数据占总数据库47%
- 如何在mysql 造1亿条记录的大容量数据表?
- 淘宝分析数据用什么工具 怎么学会分析淘宝店铺数据
- Dataphin-数据中台利器
- Facebook正在泄露信息 Facebook将数据秘密共享给其他16个app
- 数据存储层HBase进阶之写流程
- 数据持久化框架为什么放弃Hibernate、Mybatis选择JDBCTemplate
- 生意参谋竞店怎么删除 怎么看竞店的销售数据
