【发布时间】:2020-05-07 12:17:04
【问题描述】:
在一个带有名为interests 的数组字段的mongo 数据库中, 当我需要寻找对柔道或 mma 感兴趣的人时,我会这样写查询:
{interests : {$regex: "judo|mma", $options: 'i'}}
我如何找到对柔道和 mma 感兴趣的人?
注意: 我已经尝试了以下各种变体,但似乎都没有效果:
{interests : {$regex: "(?=judo)(?=mma)", $options: 'i'}},
{interests : {$regex: "(?=.*judo)(?=.*mma)", $options: 'i'}}
谢谢。
【问题讨论】:
-
目前,您正在尝试检查一个字符串是否同时是“judo”和“mma”。这当然永远不会发生。您能否举例说明在这种情况下您的数据是如何结构化的?
-
(?=.*judo)(?=.*mma)应该可以工作。 -
@Pac0 确定! inrerests 是这个结构的数组:```interests : { type: Array, default: [] } ```
-
你能试试类似的东西吗:
{interests: {$all: [/^judo/, /^mma/], , $options: 'i'}} -
@WiktorStribiżew 它是一个数组,可能包含“柔道”、“mma”或“其他”等元素,或者它们都不包含。它不是一个逗号分隔的字符串,您可以在其中执行一次搜索。就像在“柔道,其他,MMA”中一样
标签: node.js regex mongodb mongodb-query regex-lookarounds