gpt4 book ai didi

mongodb - 创建更改日志时 mongoexport 选项太多错误

转载 作者:可可西里 更新时间:2023-11-01 10:44:28 28 4
gpt4 key购买 nike

尝试使用 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() 有问题?

最佳答案

所以最后这就是应该如何完成的……或者我是如何做到的。在 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"

并删除临时数据库以支持 future 的变更日志

../mongodb/bin/mongo localhost:27017/local --eval 'db.changelog.remove()'

关于mongodb - 创建更改日志时 mongoexport 选项太多错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14496065/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com