我正在尝试使用mongoexport导出一个对象,按其ID进行过滤。
我试过了:
mongoexport -d "kb_development" -c "articles" -q "{'_id': '4e3ca3bc38c4f10adf000002'}"
和许多变化,但它一直在说
connected to: 127.0.0.1
exported 0 records
(我确信集合中有这样的对象)
在mongo shell中我会使用ObjectId('4e3ca3bc38c4f10adf000002'),但它似乎不适用于mongoexport查询。
答案 0 :(得分:4)
我认为你应该能够在ObjectId(...)
的查询参数中使用mongoexport
:
mongoexport -d kb_development -c articles -q '{_id: ObjectId("4e3ca3bc38c4f10adf000002")}'
如果这不起作用,您可以使用ObjectId
s as documented here的“严格模式”javascript表示法:
mongoexport -d kb_development -c articles -q '{_id: {"$oid": "4e3ca3bc38c4f10adf000002"}}'
(另请注意,严格模式JSON是由mongoexport
生成的格式)
答案 1 :(得分:4)
您必须使用_id
类型指定ObjectId
字段。在你的问题中,它被指定为一个字符串。
CODE ::
mongoexport -h localhost -d my_database -c sample_collection -q '{key:ObjectId("50584580ff0f089602000155")}' -o my_output_file.json
注意 ::不要忘记查询中的引号
答案 2 :(得分:1)
我的MongoDB版本:3.2.4。当我在mongo shell中使用mongoexport
工具时:
不工作:
-q '{"_id":ObjectId("5719cd12b1168b9d45136295")}'
-q '{_id: {"$oid": "5719cd12b1168b9d45136295"}}'
的如下:强>
-q "{_id:ObjectId('5719cd12b1168b9d45136295')}"
- 虽然在mongo doc,但它说
您必须将查询括在单引号(例如')中以确保它 不与您的shell环境交互。
- 但是,单引号(')不起作用!请使用双引号(“)!
答案 3 :(得分:0)
您不必按上述答案的建议添加ObjectId或$ oid。正如@Blacksad所提到的,只需将你的单引号和双引号正确。
mongoexport -d kb_development -c articles -q'{_ id:“4e3ca3bc38c4f10adf000002”}'
答案 4 :(得分:0)
这里提供的许多答案对我来说都不起作用,错误在于我的双引号。这对我有用:
mongoexport -h localhost -d database_name -c collection_name -q {_id:ObjectId(' 50584580ff0f089602066633')} -o output_file.json
请记住仅对ObjectId字符串使用单引号。
答案 5 :(得分:0)
对于 mongoexport 版本:r4.2.3
mongoexport -q '{"_id": {"$oid": "4e3ca3bc38c4f10adf000002"}}'
对于嵌套字段
mongoexport -q '{"_id": {"$oid": "4e3ca3bc38c4f10adf000002"}}' --fields parentField.childField