3个版本 (破坏性更新)
使用旧的Rust 2015
0.3.0 | 2018年2月20日 |
---|---|
0.2.0 | 2017年1月7日 |
0.1.0 | 2017年1月1日 |
在数据库接口中排名#2219
28KB
468 代码行
Oplog
Rust库,用于迭代MongoDB副本集oplog。
当前版本 0.3.0
支持的Rust版本 1.14
安装
通过在您的Cargo.toml
中添加以下内容来安装Oplog
oplog = "0.3.0"
用法
#[macro_use]
extern crate bson;
extern crate mongodb;
extern crate oplog;
use mongodb::{Client, ThreadedClient};
use oplog::{Operation, Oplog, OplogBuilder};
fn main() {
let client = Client::connect("localhost", 27017).expect("Failed to connect to MongoDB.");
if let Ok(oplog) = Oplog::new(&client) {
for operation in oplog {
match operation {
Operation::Noop { timestamp, .. } => println!("No-op at {}", timestamp),
Operation::Insert { timestamp, .. } => println!("Insert at {}", timestamp),
Operation::Update { timestamp, .. } => println!("Update at {}", timestamp),
Operation::Delete { timestamp, .. } => println!("Delete at {}", timestamp),
Operation::Command { timestamp, .. } => println!("Command at {}", timestamp),
Operation::ApplyOps { timestamp, .. } => println!("ApplyOps at {}", timestamp),
}
}
}
// Or, if you want to filter out certain operations:
if let Ok(oplog) = OplogBuilder::new(&client).filter(Some(doc! { "op" => "i" })).build() {
for insert in oplog {
println!("{}", insert);
}
}
}
文档
完整的API文档可在http://mudge.name/oplog找到
参考资料
- 迭代器,Rust示例
- 复制内部机制
- applyOps
- ripgrep作为源码中的惯用Rust代码非常有价值(另见ripgrep代码审查)
还要感谢Ryman在过程中提供的帮助。
许可证
版权© 2016-2018 Paul Mucur。
在MIT许可证下分发。
依赖关系
~15MB
~272K SLoC