【发布时间】:2015-10-22 18:20:10
【问题描述】:
我正在尝试使用 mongoose ORM 从 mongoDB 中提取结果。 以下代码部分完美运行并返回了“测试”的完全匹配
db.getCollection('cards').find({
$where: "this.name=='Test'"
})
我实际上想提取“Test”的不区分大小写的匹配项。
以下一项有效,
db.getCollection('cards').find({"name":/test/i})
但我想在 $where 上使用正则表达式,如下所示,
db.getCollection('cards').find({
$where: "this.name=='/Test/i'"
})
有人可以就如何在 $where 中处理正则表达式提供一些启示或指导吗?
【问题讨论】:
-
@npinti 这不是重复的,因为我的要求是使用 $where 关键字
-
@Cling:我不确定,所以我没有投票结束。感谢您的指正。评论已删除。
-
@Cling 您可能正在“使用”
$where,但您可能不应该这样做,除非您需要更多基于 JavaScript 的逻辑而不是您正在做的事情。 JavaScript 评估可以“仅”扫描整个集合。一个正确的“$regex”查询至少可以扫描整个索引。如果您包含插入符号^,则索引甚至更少 -
投反对票的原因是什么??
标签: regex node.js mongodb mongoose