我想根据查询导出集合投影,用于执行mongoexport的语法是:
./mongoexport -d myDB -c myCollection -q "myQuery" -o output.json我尝试在mongo中使用这个过滤器,但是不能正确地格式化它,所以表示“myQuery”是合法的:
{
'run.session.game._id':'gameId1',
'run.session.device._id':{$in:['value1','value2']},
'createdAt':{
$gte:ISODate('2016-06-05T15:14:22.163Z'),
$lte:ISODate('2017-06-05T15:14:22.163Z')
}
}如果我只有第一个过滤器,它就能工作,但是当我输入设备id的第2行时,我就会得到一个错误。错误消息如下所示:
2016-10-07T22:54:02.333+0200
error validating settings: query '[123 39 114 117 110 46 115 101 115
115 105 111 110 46 103 97 109 101 46 95 105 100 39 32 58 32 39 90 71
120 88 109 104 100 66 69 83 39 44 39 114 117 110 46 115 101 115 115 105
111 110 46 100 101 118 105 99 101 46 95 105 100 39 58 123 58 91 79 98
106 101 99 116 73 100 40 39 101 104 55 73 77 117 112 107 52 112 39 41
93 125 125]' is not valid JSON: invalid character ':' looking for
beginning of object key string
2016-10-07T22:54:02.333+0200 try 'mongoexport --help' for more
information请帮助:(我知道查询必须采用严格的JSON格式,但我不知道如何转换它.
发布于 2016-10-08 01:16:38
来自蒙古出口文档
您必须将查询用单引号括起来(例如')以确保它不与您的shell环境交互。
所以,试着用这种方式切换你的"和':
./mongoexport -d myDB -c myCollection -q '{
"run.session.game._id":"gameId1",
"run.session.device._id":{$in:["value1","value2"]},
"createdAt":{
$gte:ISODate("2016-06-05T15:14:22.163Z"),
$lte:ISODate("2017-06-05T15:14:22.163Z")
}
}' -o output.json发布于 2018-12-18 08:34:51
在我的例子中,它是通过在内部查询中使用单引号(‘)来解析的,并将整个查询用双引号(“)括起来,如
./mongoexport -d myDB -c myCollection --query "{'run.session.game._id':'gameId1','run.session.device._id':{$in:['value1','value2']},'createdAt':{$gte:ISODate('2016-06-05T15:14:22.163Z'),$lte:ISODate('2017-06-05T15:14:22.163Z')}}" -o output.json发布于 2020-10-20 17:23:54
我在字符串之前使用了\:
mongoexport --db=database --collection=test --query="{ \ "Timestamp\": { \ "$gte \ ": \ "2014-01-01T00:00:00 \ ", \ "$lt \ ": \ "2020-10-20T00:00:00 \ "}}" --type=csv --fields=Timestamp --out=C:\Users\Documents\test.csvhttps://stackoverflow.com/questions/39925880
复制相似问题