尝试使用mongoexport导出oplog的csv ...尝试了到目前为止我读过的所有引用组合......
../mongodb/bin/mongoexport --csv -d local -c oplog.rs -o export.csv -f {op,ns,o._id} -q "{ts: { \"$gte\": Timestamp(1355100998000,1)} , op :{ \"$nin\" : [\"c\",\"n\"]}"
但我一直在
ERROR: too many positional options
.....
可能出错?
经过大量的拧紧后我尝试了这个
q="{op: { \$nin: [\"c\",\"n\"]}}"
mongoexport --csv -d local -c oplog.rs -o export.csv -f {op,ns,o._id} -q "$q"
这就像一个魅力。 但仍然是这个
q="{ts: { \$gte: Timestamp(1355100998000,1)}, op: { \$nin: [\"c\",\"n\"]}}"
../mongodb/bin/mongoexport --csv --db local --collection oplog.rs -o changelog.csv --fields op,ns -q "$q"
不起作用。输出
Assertion: 10340:Failure parsing JSON string near: ts: { $gte
感觉Timestamp()出了什么问题?
答案 0 :(得分:1)
所以最后这应该是怎么做的......或者我是怎么做到的。在30000条记录上花费最多2秒就可以快速尝试它。 所有发生的事情是我通过使用带有--eval选项的mongo将结果存储到一个新集合中
q="db.oplog.rs.find({ ts : { \$gte : Timestamp( $timestamp, 1)}, op : { \$nin : [\"c\",\"n\"] } }, { op : 1 , ns : 1 , \"o._id\" : 1 , h : 1 } ).forEach(function(x){db.changelog.save(x);})"
../mongodb/bin/mongo localhost:27017/local --eval "$q"
然后使用mongoexport
将其导出为.csv../mongodb/bin/mongoexport --csv --db local --collection changelog -o changelog.csv --fields "o._id","op","ns","h"
并删除临时数据库以支持将来的更改日志
../mongodb/bin/mongo localhost:27017/local --eval 'db.changelog.remove()'