2

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()に何か問題があると感じますか?

4

1 に答える 1

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()'
于 2013-01-28T08:22:11.060 に答える