问题描述
这是一个示例查询:
db.readings.find( {"_id.s" : ISODate("2012-11-01T00:05:00Z") } ).count()
Query 在 mongo shell 中工作.但是,在 bash 脚本中或直接在 Ubuntu shell 中
Query works in the mongo shell. However, in a bash script or directly in the Ubuntu shell
mongo Fivemin --eval "printjson(db.readings.find( {"_id.s" : ISODate("2012-11-01T00:05:00Z") } ).count())"代码>
返回一个 SyntaxError: missing : after property id (shell eval):1
我似乎找不到查询的问题.我恢复到 { "_id" : {"s" : ...} }
,它仍然出现同样的问题.find().count()
但是有效.
I can't seem to find a problem with the query. I reverted to { "_id" : {"s" : ...} }
, and it still gives the same problem. find().count()
works however.
推荐答案
在 bash shell 中遇到了同样的问题.
Had the same issue in bash shell.
这会因为双引号而失败:
This will fail because of double quotes:
mongo fivemin --eval "printjson(db.readings.find( {"_id.s" : ISODate("2012-11-01T00:05:00Z") } ).count())"
但是在单引号中使用 eval 字符串是可行的:
But using the eval string in single quote it works:
mongo fivemin --eval 'printjson(db.readings.find( {"_id.s" : ISODate("2012-11-01T00:05:00Z") } ).count())'
如果你使用像 $regex 这样的 $ 符号,你需要对它进行转义:
And if you use a $ sign like $regex you need to escape it:
mongo fivemin --eval 'printjson(db.readings.find( {"_id.s" : {"\$regex":"2012-11-01T*"} } ).count())'
这篇关于Mongo 查询在 mongo shell 中有效,但在 bash mongo --eval 中无效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!