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

时间:2014-05-17 14:36:37

标签: mongodb

MongoDB oplog中有哪些不同的字母" op"场是指?我可以猜到一些字母意思,但我不确定。

" N" =?

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

" U" =更新,这是正确的吗?

" C" =计数,这是正确的吗?

我想" d" =删除?

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

2 个答案:

答案 0 :(得分:9)

来自mongohq,这些是op字段可以包含的值及其含义。 “i”,“u”,“d”,“c”,“db”,“n”:

  

这是“op”字段   这表明发生了什么操作。它的值可以是“i”   “插入”,“u”表示“更新”,“d”表示“删除”。对于大多数oplog   拖尾应用程序,你只会对这三个感兴趣   值,但是对于影响数据库的命令也有一个“c”   高水平,“数据库”,显然宣布存在   “数据库”和“n”代表“无操作”,用于数据库中的更改或   不会导致存储数据发生变化的集合。

     

任何这些操作都将应用于数据库或   收集所以下一个字段,“ns”告诉我们这个“命名空间”   操作。

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

答案 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()的第二个参数)。