2015-12-26 33 views
2

我试图导出我的集合的一个子集。我只想要包含特定“搜索”ID的文档。虽然为了隔离相关文档,但我无法弄清楚我在定义查询时做错了什么。这是我输入的内容:MongoExport有效的JSON查询构建

mongoexport --db data --collection user_admin --fieldFile exportfields.txt --query {'search':ObjectId("5621634716c878440a4e4aaf")} --type=csv --out user_admin.csv 

这是我收到的错误:

error validating settings: query '{'search':ObjectId(5621634716c878440a4e4aaf)}' is not valid JSON: invalid character 'c' after constructor argument

谢谢! :)

P.S.我正在使用Mongod v3.0.6

回答

1

根据documentation,您必须用单引号括起您的查询。但是,从经验来看,这在使用Windows命令提示符时不适用。如果使用DOS命令提示符,则需要用双引号括起查询,但用单引号替换查询中的每个引用。

所以,你的查询应该,如果你使用的不是Windows DOS这样的:

--query '{"search":ObjectId(5621634716c878440a4e4aaf)}' 

或者这样的命令行执行mongoexport时:

--query "{'search':ObjectId(5621634716c878440a4e4aaf)}" 
+0

感谢您的快速响应。我通过Windows命令提示符运行它,所以我认为你的第二个建议是成立的。当我使用第二个建议时:''mongoexport --db data --collection user_admin --fieldFile exportfields.txt --query“{'search':ObjectId(5621634716c878440a4e4aaf)}”--type = csv --out user_admin.csv'我得到这个错误:_“错误验证设置:查询'{'搜索':ObjectId(5621634716c878440a4e4aaf)}'无效JSON:构造函数参数”_静态后无效字符'c'。啊哈! –

+0

啊!我想到了。 ObjectId值也需要单引号。谢谢你的帮助 :) –

5

我想通了正确的顺序我的JSON查询中的引号给出了我通过Windows命令提示符运行它:

mongoexport --db data --collection user_admin --fieldFile exportfields.txt --query "{'search':ObjectId('5621634716c878440a4e4aaf')}" --type=csv --out user_admin.csv