mongodb - Mongo 查询在 mongo shell 中有效,但在 bash mongo --eval 中无效?

标签 mongodb

这是一个示例查询:

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/

相关文章:

node.js - db.collectionNames 在 Node.js 中不起作用

java - mongodb中的复杂查询

mongodb - Symfony2 和 MongoDB 注释/映射无法识别

node.js - mongodb 连接问题 "Cannot call method ' 更新'未定义"

MongoDB 合并展开的文档

MongoDB 模式设计适用于 Tinder 之类的应用程序、嵌入式文档还是单独的集合?

json - 如何将json对象数组保存到mongoose?

javascript - 如何将 .immediate.types.apps 更改为动态文本

java - 使用 Java 的字段中的 MongoDB concat 数组

mongodb - 如何在Mongodb中使用时区设置进行查询