MongoDB oplog中有哪些不同的字母" op"场是指?我可以猜到一些字母意思,但我不确定。
" N" =?
" I" =插入,这是正确的吗?
" U" =更新,这是正确的吗?
" C" =计数,这是正确的吗?
我想" d" =删除?
其他字母是什么,它们的含义是什么?
答案 0 :(得分:9)
来自mongohq,这些是op字段可以包含的值及其含义。 “i”,“u”,“d”,“c”,“db”,“n”:
这是“op”字段 这表明发生了什么操作。它的值可以是“i” “插入”,“u”表示“更新”,“d”表示“删除”。对于大多数oplog 拖尾应用程序,你只会对这三个感兴趣 值,但是对于影响数据库的命令也有一个“c” 高水平,“数据库”,显然宣布存在 “数据库”和“n”代表“无操作”,用于数据库中的更改或 不会导致存储数据发生变化的集合。
任何这些操作都将应用于数据库或 收集所以下一个字段,“ns”告诉我们这个“命名空间” 操作。
答案 1 :(得分:3)
> use test
switched to db test
> db.foo.insert({x:1})
> db.foo.update({x:1}, {$set : {y:1}})
> db.foo.update({x:2}, {$set : {y:1}}, true)
> db.foo.remove({x:1})
现在在oplog中
> use local
switched to db local
> db.oplog.rs.find()
{ "ts" : { "t" : 1286821527000, "i" : 1 }, "h" : NumberLong(0), "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } }
{ "ts" : { "t" : 1286821977000, "i" : 1 }, "h" : NumberLong("1722870850266333201"), "op" : "i", "ns" : "test.foo", "o" : { "_id" : ObjectId("4cb35859007cc1f4f9f7f85d"), "x" : 1 } }
{ "ts" : { "t" : 1286821984000, "i" : 1 }, "h" : NumberLong("1633487572904743924"), "op" : "u", "ns" : "test.foo", "o2" : { "_id" : ObjectId("4cb35859007cc1f4f9f7f85d") }, "o" : { "$set" : { "y" : 1 } } }
{ "ts" : { "t" : 1286821993000, "i" : 1 }, "h" : NumberLong("5491114356580488109"), "op" : "i", "ns" : "test.foo", "o" : { "_id" : ObjectId("4cb3586928ce78a2245fbd57"), "x" : 2, "y" : 1 } }
{ "ts" : { "t" : 1286821996000, "i" : 1 }, "h" : NumberLong("243223472855067144"), "op" : "d", "ns" : "test.foo", "b" : true, "o" : { "_id" : ObjectId("4cb35859007cc1f4f9f7f85d") } }
op:应该应用于从站的写操作。 ñ 表示无操作,这只是一条信息性消息。
> i for inserts
> u for updates
> and d for deletes
o字段现在包含要插入的文档或要更新和删除的条件。请注意,对于更新,有两个o字段(o和o2)。 o2给出更新标准,o给出修改(相当于update()的第二个参数)。