MongoShake
MongoShake copied to clipboard
补充oplog字段解析Wiki避免使用者踩坑
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" } ]
...
}
没有弄明白你的意思,是哪个文档需要更新?还是shake使用中有问题?
没有弄明白你的意思,是哪个文档需要更新?还是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不仅仅是现有文档中的那一种
在4.2版本上通过db.test.update({"kick":10}, {$set:{"plus_field":2, "plus_field2":2}})
没有复现,补充了replaceOne生成的oplog,还有问题请补充