在较旧的MongoDB版本中,$ expr是否可以替代?

时间:2018-10-16 13:41:50

标签: node.js mongodb mongoose aggregation-framework

在React.js应用程序的Node.js后端中,我正在使用

def find_or_create_by_name(name)
  find_by_name(name) || create(name)
end

问题是我不能将$ expr与mongoDB版本<3.6一起使用。 由于此问题(不推荐使用的方法等),似乎需要花费很多精力来升级mongoDB版本的juste。 所以我想知道是否有一种方法可以在不使用$ expr的情况下做我想做的事情?

这是代码:

"mongodb" (as db.version returns): "3.4.10",
"mongoose": "5.3.4"

你知道吗?这是完整的方法,如果您需要有关它的更多详细信息。

match.$expr = {
            $lt: ["$distance", "$range"] // "calculated_distance < tutor_range"
         }

非常感谢您的回答和帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用$addFields + $match代替$expr

类似

{"$addFields":{"islt":{"$cond":[{"$lt": ["$distance", "$range"]}, true, false]}}},
{"$match":{"islt":true}}

如果愿意,可以使用额外的项目阶段来删除islt变量。

 {"$project":{"islt":0}}