查找包含猫鼬的A和X的名称?

时间:2019-12-04 14:07:27

标签: javascript node.js mongodb mongoose

我正在使用Mongoose,我想将find()方法与2个不同的字符串一起使用。
我的数据库中有“先生机器人”,但如果用户只是键入“机器人先生”,则由于点号而不会返回任何内容。
因此,我考虑过将“机器人先生”拆分为由“先生”和“机器人”组成的数组,并且我想返回名称中包含“先生”和“机器人”的文档。
我尝试了类似的方法,但没有成功:

Model.find({name: /Mr/, name: /Robot/});

提前谢谢

2 个答案:

答案 0 :(得分:0)

我们假设hibye是两个词。因此,正则表达式就是这样的/hi.*?bye.*/

如果我的正则表达式不正确,请纠正我。

因此,他们的查询应如下所示。选项i表示不区分大小写。

Model.find({ "name" : { $regex: /hi.*?bye.*/, $options: 'i' } });

希望有帮助。

答案 1 :(得分:0)

如果您已经将name拆分为一个数组,则可以使用$all来匹配该数组中的所有项目,这是必需的,因为例如仅通过name进行检查Robot

这可能最终返回Mr. RobotMrs. Robot。 (可能存在多个使用不同称呼的名字)

因此您必须检查所有元素并确保它们匹配

Model.find( { name: { $all:  [ "Mr", "Robot" ]  } } ).

如果您不想进行name拆分,那么Regex也许是可行的方法