mongoexport - JSON 查询问题(扩展 JSON - 无效 JSON 输入)
mongoexport - issue with JSON query (extended JSON - Invalid JSON input)
最近开始学习MongoDB。今天导师教我们mongoexport命令。在进行同样的练习时,我遇到了一个典型的问题,包括讲师在内的 none 其他同班同学都遇到过。我在 Windows 10 机器上使用 MongoDB 版本 4.2.0。
如果我对我的集合使用 mongoexport 而没有任何 -q 参数来指定任何过滤条件,它可以正常工作。
mongoexport -d trainingdb -c employee -f empId,name,designation -o \mongoexport\all-employees.json
2019-09-17T18:00:30.300+0530 connected to: mongodb://localhost/
2019-09-17T18:00:30.314+0530 exported 3 records
但是,每当我将 JSON 查询指定为 -q(或 --query)时,它都会给出如下错误。
mongoexport -d trainingdb -c employee -f empId,name,designation -q {'designation':'Developer'} -o \mongoexport\developers.json
2019-09-17T18:01:45.381+0530 connected to: mongodb://localhost/
2019-09-17T18:01:45.390+0530 Failed: error parsing query as Extended JSON: invalid JSON input
同样的错误在我为查询尝试过的所有不同风格中仍然存在。
-q {'designation':'Developer'}
--query {'designation':'Developer'}
-q "{'designation':'Developer'}"
我什至尝试在 'empId' 上使用不同的查询条件作为 -q {'empId':'1001'} 但没有成功。我不断收到同样的错误。
根据 ,我尝试了以下选项,但出现了不同的错误。
-q '{"designation":"Developer"}'
错误是:'查询'[39 123 101 109 112 73 100 58 49 48 48 49 125 39]'无效JSON:json:不能将字符串解组为 map[string]interface {}'.
类型的 Go 值
2019-09-17T20:24:58.878+0530 query '[39 123 101 109 112 73 100 58 49 48 48 49 125 39]' is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface {}
2019-09-17T20:24:58.882+0530 try 'mongoexport --help' for more information
我真的不确定这里缺少什么?尝试了一些谷歌搜索,也通过了官方 MongoDB documentation of the mongoexport - 但没有运气。
我系统中的员工集合如下所示,包含 3 个文档。
> db.employee.find().pretty()
{
"_id" : ObjectId("5d80d1ae0d4d526a42fd95ad"),
"empId" : 1001,
"name" : "Raghavan",
"designation" : "Developer"
}
{
"_id" : ObjectId("5d80d1b20d4d526a42fd95ae"),
"empId" : 1002,
"name" : "Kannan",
"designation" : "Architect"
}
{
"_id" : ObjectId("5d80d1b40d4d526a42fd95af"),
"empId" : 1003,
"name" : "Sathish",
"designation" : "Developer"
}
>
更新
按照@NikosM 的建议,我已将查询保存在 .json 文件中 (query.json) 并尝试使用相同的 mongoexport 命令新的方法。仍然,没有运气。同样的元帅错误。
cat query.json
{"designation":"Developer"}
mongoexport -d trainingdb -c employee -f empId,name,designation -q 'query.json' -o \mongoexport\developers.json
2019-09-17T21:16:32.849+0530 query '[39 113 117 101 114 121 46 106 115 111 110 39]' is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface {}
2019-09-17T21:16:32.852+0530 try 'mongoexport --help' for more information
如有任何帮助,我们将不胜感激。
以下不同的方法最终使它起作用——我在其中指定了 JSON 查询,双引号用反斜杠转义:-q "{\"designation\" :\"Developer\"}".
mongoexport -d trainingdb -c employee -f empId,name,designation -q "{\"designation\":\"Developer\"}" -o \mongoexport\developers.json
2019-09-17T21:33:01.642+0530 connected to: mongodb://localhost/
2019-09-17T21:33:01.658+0530 exported 2 records
cat developers.json
{"_id":{"$oid":"5d80d1ae0d4d526a42fd95ad"},"empId":1001.0,"name":"Raghavan","designation":"Developer"}
{"_id":{"$oid":"5d80d1b40d4d526a42fd95af"},"empId":1003.0,"name":"Sathish","designation":"Developer"}
非常感谢@Caconde。你的建议很有帮助。
但我真的不确定为什么这不能单独在我的机器上工作以及在查询格式中进行此调整的原因。
我发现还有另一种方法可以使用三重双引号 (""") 进行外部封装。
mongoexport -d trainingdb -c employee -f empId,name,designation -q """ {"designation":"Developer"} """ -o \mongoexport\developers.json
最近开始学习MongoDB。今天导师教我们mongoexport命令。在进行同样的练习时,我遇到了一个典型的问题,包括讲师在内的 none 其他同班同学都遇到过。我在 Windows 10 机器上使用 MongoDB 版本 4.2.0。
如果我对我的集合使用 mongoexport 而没有任何 -q 参数来指定任何过滤条件,它可以正常工作。
mongoexport -d trainingdb -c employee -f empId,name,designation -o \mongoexport\all-employees.json
2019-09-17T18:00:30.300+0530 connected to: mongodb://localhost/
2019-09-17T18:00:30.314+0530 exported 3 records
但是,每当我将 JSON 查询指定为 -q(或 --query)时,它都会给出如下错误。
mongoexport -d trainingdb -c employee -f empId,name,designation -q {'designation':'Developer'} -o \mongoexport\developers.json
2019-09-17T18:01:45.381+0530 connected to: mongodb://localhost/
2019-09-17T18:01:45.390+0530 Failed: error parsing query as Extended JSON: invalid JSON input
同样的错误在我为查询尝试过的所有不同风格中仍然存在。
-q {'designation':'Developer'}
--query {'designation':'Developer'}
-q "{'designation':'Developer'}"
我什至尝试在 'empId' 上使用不同的查询条件作为 -q {'empId':'1001'} 但没有成功。我不断收到同样的错误。
根据
-q '{"designation":"Developer"}'
错误是:'查询'[39 123 101 109 112 73 100 58 49 48 48 49 125 39]'无效JSON:json:不能将字符串解组为 map[string]interface {}'.
类型的 Go 值2019-09-17T20:24:58.878+0530 query '[39 123 101 109 112 73 100 58 49 48 48 49 125 39]' is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface {}
2019-09-17T20:24:58.882+0530 try 'mongoexport --help' for more information
我真的不确定这里缺少什么?尝试了一些谷歌搜索,也通过了官方 MongoDB documentation of the mongoexport - 但没有运气。
我系统中的员工集合如下所示,包含 3 个文档。
> db.employee.find().pretty()
{
"_id" : ObjectId("5d80d1ae0d4d526a42fd95ad"),
"empId" : 1001,
"name" : "Raghavan",
"designation" : "Developer"
}
{
"_id" : ObjectId("5d80d1b20d4d526a42fd95ae"),
"empId" : 1002,
"name" : "Kannan",
"designation" : "Architect"
}
{
"_id" : ObjectId("5d80d1b40d4d526a42fd95af"),
"empId" : 1003,
"name" : "Sathish",
"designation" : "Developer"
}
>
更新
按照@NikosM 的建议,我已将查询保存在 .json 文件中 (query.json) 并尝试使用相同的 mongoexport 命令新的方法。仍然,没有运气。同样的元帅错误。
cat query.json
{"designation":"Developer"}
mongoexport -d trainingdb -c employee -f empId,name,designation -q 'query.json' -o \mongoexport\developers.json
2019-09-17T21:16:32.849+0530 query '[39 113 117 101 114 121 46 106 115 111 110 39]' is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface {}
2019-09-17T21:16:32.852+0530 try 'mongoexport --help' for more information
如有任何帮助,我们将不胜感激。
以下不同的方法最终使它起作用——我在其中指定了 JSON 查询,双引号用反斜杠转义:-q "{\"designation\" :\"Developer\"}".
mongoexport -d trainingdb -c employee -f empId,name,designation -q "{\"designation\":\"Developer\"}" -o \mongoexport\developers.json
2019-09-17T21:33:01.642+0530 connected to: mongodb://localhost/
2019-09-17T21:33:01.658+0530 exported 2 records
cat developers.json
{"_id":{"$oid":"5d80d1ae0d4d526a42fd95ad"},"empId":1001.0,"name":"Raghavan","designation":"Developer"}
{"_id":{"$oid":"5d80d1b40d4d526a42fd95af"},"empId":1003.0,"name":"Sathish","designation":"Developer"}
非常感谢@Caconde。你的建议很有帮助。
但我真的不确定为什么这不能单独在我的机器上工作以及在查询格式中进行此调整的原因。
我发现还有另一种方法可以使用三重双引号 (""") 进行外部封装。
mongoexport -d trainingdb -c employee -f empId,name,designation -q """ {"designation":"Developer"} """ -o \mongoexport\developers.json