MongoShake icon indicating copy to clipboard operation
MongoShake copied to clipboard

补充oplog字段解析Wiki避免使用者踩坑

Open GuoZhouBoo opened this issue 2 years ago • 2 comments

Update

以$set和$unset更新操作:分为两种情况,一次更新一个字段与一次更新多个字段 db.test.update({"kick":10}, {$set:{"plus_field":2}}) { "ts":50803123123123123465, "v":2, "op":"u", "ns":"zz.test", "o":[ { "Name":"$v", "Value":1 }, { "Name":"$set", "Value":[ { "Name":"plus_field", "Value":2 } ] } ], ... } db.test.update({"kick":10}, {$set:{"plus_field":2, "plus_field2":2}}) 此种情况,MongoDB4.0版本之后,底层使用的是replaceOne操作,因此oplog格式与replaceOne一致,即: { "ts":50803123123123123465, "v":2, "op":"u", "ns":"zz.test", "o":[ { "Name":"plus_field", "Value":"2" }, { "Name":"plus_field2", "Value":"2" } ] ... }

GuoZhouBoo avatar Jul 10 '22 05:07 GuoZhouBoo

没有弄明白你的意思,是哪个文档需要更新?还是shake使用中有问题?

zhangst avatar Jul 11 '22 07:07 zhangst

没有弄明白你的意思,是哪个文档需要更新?还是shake使用中有问题?

https://github.com/alibaba/MongoShake/wiki/oplog%E5%90%84%E5%AD%97%E6%AE%B5%E7%9A%84%E8%A7%A3%E6%9E%90

是这个文档建议更新完善一下,执行$set更新,产生的oplog不仅仅是现有文档中的那一种

GuoZhouBoo avatar Jul 13 '22 14:07 GuoZhouBoo

在4.2版本上通过db.test.update({"kick":10}, {$set:{"plus_field":2, "plus_field2":2}})没有复现,补充了replaceOne生成的oplog,还有问题请补充

zhangst avatar Dec 12 '22 08:12 zhangst