MongoDB oplog操作字母是什么意思?

Ade*_*lin 5 mongodb

MongoDB oplog"op"字段中的不同字母是什么意思?我可以猜到一些字母意思,但我不确定.

"n"=?

"我"=插入,这是正确的吗?

"你"=更新,这是对的吗?

"c"=计数,这是对的吗?

我猜"d"=删除?

还有什么其他字母,它们的含义是什么?

Joh*_*one 9

从mongohq,这些是op字段可以包含的值及其含义."i","u","d","c","db","n":

这是"op"字段,表示发生了什么操作.其值可以是"i"表示"插入","u"表示"更新","d"表示"删除".对于大多数oplog拖尾应用程序,您只对这三个值感兴趣,但是对于影响高级别数据库的命令也有"c","db"显然表示存在"数据库",并且" n"for"no-ops",用于数据库或集合中的更改,这些更改不会导致存储数据发生更改.

任何这些操作都将应用于数据库或集合,因此下一个字段"ns"告诉我们此操作的"命名空间".

http://blog.mongohq.com/the-mongodb-oplog-and-node-js/


moh*_*ias 3

> use test\n switched to db test\n> db.foo.insert({x:1})\n> db.foo.update({x:1}, {$set : {y:1}})\n> db.foo.update({x:2}, {$set : {y:1}}, true)\n> db.foo.remove({x:1})\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在在oplog中

\n\n
> use local\nswitched to db local\n> db.oplog.rs.find()\n{ "ts" : { "t" : 1286821527000, "i" : 1 }, "h" : NumberLong(0), "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } }\n{ "ts" : { "t" : 1286821977000, "i" : 1 }, "h" : NumberLong("1722870850266333201"), "op" : "i", "ns" : "test.foo", "o" : { "_id" : ObjectId("4cb35859007cc1f4f9f7f85d"), "x" : 1 } }\n{ "ts" : { "t" : 1286821984000, "i" : 1 }, "h" : NumberLong("1633487572904743924"), "op" : "u", "ns" : "test.foo", "o2" : { "_id" : ObjectId("4cb35859007cc1f4f9f7f85d") }, "o" : { "$set" : { "y" : 1 } } }\n{ "ts" : { "t" : 1286821993000, "i" : 1 }, "h" : NumberLong("5491114356580488109"), "op" : "i", "ns" : "test.foo", "o" : { "_id" : ObjectId("4cb3586928ce78a2245fbd57"), "x" : 2, "y" : 1 } }\n{ "ts" : { "t" : 1286821996000, "i" : 1 }, "h" : NumberLong("243223472855067144"), "op" : "d", "ns" : "test.foo", "b" : true, "o" : { "_id" : ObjectId("4cb35859007cc1f4f9f7f85d") } }\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

op:应该应用于从机的写操作。n\n 表示无操作,这只是一条信息性消息。

\n
\n\n
>  i for inserts \n>  u for updates   \n> and d for deletes\n
Run Code Online (Sandbox Code Playgroud)\n\n

o 字段现在包含要插入的文档或要更新和删除的条件。请注意,对于更新,有两个 o 字段(o 和 o2)。o2 给出更新标准,o 给出修改(相当于 update()\xe2\x80\x98s 第二个参数)。

\n