如何将mongoDB操作日志文件转换为实际查询



我想将MongoDB本地Oplog文件转换为实际的查询,这样我就可以执行该查询并获得确切的副本数据库。它有任何包、文件、内置工具或脚本吗?

由于MongoDB不保存查询,因此无法从oplog条目中获得确切的查询。

oplog为执行的每个原子修改都有一个条目。使用单个查询在mongo实例上执行的多次插入/更新/删除将转换为多个条目并写入oplog集合。例如,如果我们使用Bulk.insert()插入10000个文档,那么将在oplog集合中创建10000个新条目。现在,通过触发10000个Collection.insertOne()查询也可以完成同样的操作。oplog条目看起来完全相同!无法判断到底发生了哪一件事。

对不起,那是不可能的。

原因是,opLog没有查询。OpLog只包括对数据的更改(添加、更新、删除(,它用于复制和重做。

为了获得DB的精确副本,它被称为";"复制";,这当然得到了系统的支持。

致";"复制";对f.ex.one数据库或集合的更改,可以使用https://www.mongodb.com/docs/manual/changeStreams/.

您可以从操作日志中获取查询。Oplog定义了多种操作类型,例如op:";i〃"u"d";等等,用于插入、更新、删除。对于这些类型;o"/"o2";具有相应数据和过滤器的字段。现在根据操作类型调用相应的驱动程序API db.collection.insert((/update((/delete((.

最新更新