这是一个示例查询:
db.readings.find( {"_id.s": ISODate("2012-11-01T00:05:00Z") }).count()
查询在 mongo shell 中工作。但是,在 bash 脚本中或直接在 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()
然而有效。
最佳答案
在 bash shell 中有同样的问题。
由于双引号,这将失败:
mongo fivemin --eval "printjson(db.readings.find( {"_id.s" : ISODate("2012-11-01T00:05:00Z") } ).count())"
但是在单引号中使用 eval 字符串是可行的:
mongo fivemin --eval 'printjson(db.readings.find( {"_id.s" : ISODate("2012-11-01T00:05:00Z") } ).count())'
如果你使用像 $regex 这样的 $ 符号,你需要转义它:
mongo fivemin --eval 'printjson(db.readings.find( {"_id.s" : {"\$regex":"2012-11-01T*"} } ).count())'
关于mongodb - Mongo 查询在 mongo shell 中有效,但在 bash mongo --eval 中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15435838/