【问题标题】:Mongo return syntax error if run using --eval如果使用 --eval 运行 Mongo 会返回语法错误
【发布时间】:2017-11-22 11:42:34
【问题描述】:

当我使用 mongo --eval 运行下面提到的查询时,它给出“SyntaxError: Unexpected token:”但是当使用 mongo shell 运行它时它工作正常。
任何人都可以指导为什么会发生这种情况。

Mongo 命令

mongo 127.0.0.1:27017/ne --eval "printjson(db.reader.find({  accessDate  :  { $lte : 20171122 , $gte : 20171112 }, actDate  :  { $lte : 20171122 , $gte : 20171112 } }).toArray())" > /home/output2.json

输出

MongoDB shell version: 2.6.3 connecting to: 127.0.0.1:27017/ne 2017-11-22T14:09:28.258+0530 SyntaxError: Unexpected token :

【问题讨论】:

  • 您使用的是什么系统外壳(例如bashzsh、...)?我怀疑您需要转义 $ (\$),以便将它们传递给 mongo shell,而不是在系统 shell 中被解释为变量。

标签: mongodb mongodb-query syntax-error


【解决方案1】:

您的代码对我有用,我遇到的唯一问题是将输出写入 /home/output2.json:

$ mongo 127.0.0.1:27017/ne --eval "printjson(db.reader.find({  accessDate  :  { $lte : 20171122 , $gte : 20171112 }, actDate  :  { $lte : 20171122 , $gte : 20171112 } }).toArray())" > /home/output2.json
-bash: /home/output2.json: Operation not supported

$ mongo 127.0.0.1:27017/ne --eval "printjson(db.reader.find({  accessDate  :  { $lte : 20171122 , $gte : 20171112 }, actDate  :  { $lte : 20171122 , $gte : 20171112 } }).toArray())" > output2.json

$ ll output2.json
-rw-r--r--  1 myname  staff   205B Nov 22 11:53 output2.json

$ mongo --version
MongoDB shell version v3.4.7

你用的是什么版本的mongo?

【讨论】:

  • MongoDB shell 版本:2.6.3
  • 能否升级到新版本的 mongo shell 看看是否能解决问题?
猜你喜欢
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 2021-01-14
  • 1970-01-01
  • 2021-08-09
  • 2021-11-03
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多