在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"
}
非常感谢您的回答和帮助!
答案 0 :(得分:2)
您可以使用$addFields
+ $match
代替$expr
。
类似
{"$addFields":{"islt":{"$cond":[{"$lt": ["$distance", "$range"]}, true, false]}}},
{"$match":{"islt":true}}
如果愿意,可以使用额外的项目阶段来删除islt变量。
{"$project":{"islt":0}}