mongodb - Mongodb Where 条件与文件名中的空格
问题描述
我正在尝试使用以下 json 文件在 mongodb 中应用 where 条件:http: //nicholasjohnson.com/mongo/datasets/stocks.json
我想退回所有“今年 EPS 增长”小于“明年 EPS 增长”的文件。我使用以下命令,但结果为空:
db.stock.find(
{$where: function()
{return("obj.EPS growth this year" < "obj.EPS growth next year")}
})
也许问题是文件名中的空格。你有什么建议来解决这个问题吗?
解决方案
也许问题是文件名中的空格。
不,这不是空间(也不是文件名)。您正在比较两个文字字符串,因为它们是文字,所以它们对于所有文档都是相同的。而这种情况恰好是错误的,这就是为什么你没有得到任何结果。
您可以尝试解决实际文档的实际字段
db.stock.find(
{$where: function() {
return this["EPS growth this year"] < this["EPS growth next year"]
}
})
或者,更好的是,使用$expr
和聚合框架:https ://docs.mongodb.com/manual/reference/operator/query/expr/#mongodb-query-op.-expr