首页 > 解决方案 > 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")}
})

也许问题是文件名中的空格。你有什么建议来解决这个问题吗?

标签: mongodb

解决方案


也许问题是文件名中的空格。

不,这不是空间(也不是文件名)。您正在比较两个文字字符串,因为它们是文字,所以它们对于所有文档都是相同的。而这种情况恰好是错误的,这就是为什么你没有得到任何结果。

您可以尝试解决实际文档的实际字段

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


推荐阅读