查询 Mongoexport

Query for Mongoexport

我想根据查询导出集合投影,我用来执行 mongoexport 的语法是:

./mongoexport -d myDB -c myCollection -q "myQuery" -o output.json

我试过在mongoshell中使用这个过滤器,但是我无法正确格式化,所以代表"myQuery":[=13=是合法的]

{
  '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')
   }
}

如果我只有第一个过滤器,它就可以工作,但是当我在第 2 行输入设备 ID 时,我得到了一个错误。 错误消息如下所示:

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 格式,但我真的不知道如何转换它...

您似乎在 $in 运算符之后缺少 :。尝试使用:

'run.session.device._id':{$in:['value1','value2']}

来自 mongoexport documentation:

You must enclose the query in single quotes (e.g. ') to ensure that it does not interact with your shell environment.

所以尝试这样切换 "'

./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

对于我的情况,它是通过在内部查询中使用单引号 (') 解决的,并用双引号 (") 将整个查询括起来,例如

./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

我在字符串前使用了\

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.csv