Mongodb Oplog和System Profiler之间的区别

时间:2018-01-19 18:30:32

标签: mongodb mongodb-oplog

我是MongoDB的新手,正在尝试跟踪数据库的操作。根据文档,似乎像insert这样的操作应该在oplog和profiler中,但我只看到它记录在profiler中。对于上下文,我在测试集合中的本地数据库中插入(例如'local.col'),但过滤'local.col'只会在profiler输出中产生结果,而不是oplog。

基于此,我试图理解这两个工具之间的差异,因为当oplog没有记录操作时,我无法在互联网上找到任何内容。

1 个答案:

答案 0 :(得分:0)

让我们插入一些东西..

db.getSiblingDB("local").oplog.rs.find().sort({ts:-1})

然后看看我们在oplog上的内容......

db.getSiblingDB("local").oplog.rs.find({"ns":"test.testi"}) { "ts" : Timestamp(1516437458, 2), "t" : NumberLong(80), "h" : NumberLong("8404799607288492717"), "v" : 2, "op" : "i", "ns" : "test.testi", "o" : { "_id" : ObjectId("5a62ffd1c0d303fa808617bf") } }

你可以看到我们有插入操作(op)" i" with namespace(ns)" test.testi"和文档(o)只有对象id自动添加到空文档的系统。

因此,oplog仅记录更改。我们在这里可以看到......

db.getSiblingDB("test").testi.update({"_id" : ObjectId("5a62ffd1c0d303fa808617bf") },{$set:{"other":"second"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

是什么产生......

{ "ts" : Timestamp(1516437961, 1), "t" : NumberLong(80), "h" : NumberLong("-6648566515650969093"), "v" : 2, "op" : "u", "ns" : "test.testi", "o2" : { "_id" : ObjectId("5a62ffd1c0d303fa808617bf") }, "o" : { "$set" : { "other" : "second" } } }