我正在使用Mongoose,我想将find()方法与2个不同的字符串一起使用。
我的数据库中有“先生机器人”,但如果用户只是键入“机器人先生”,则由于点号而不会返回任何内容。
因此,我考虑过将“机器人先生”拆分为由“先生”和“机器人”组成的数组,并且我想返回名称中包含“先生”和“机器人”的文档。
我尝试了类似的方法,但没有成功:
Model.find({name: /Mr/, name: /Robot/});
提前谢谢
答案 0 :(得分:0)
我们假设hi
和bye
是两个词。因此,正则表达式就是这样的/hi.*?bye.*/
。
如果我的正则表达式不正确,请纠正我。
因此,他们的查询应如下所示。选项i
表示不区分大小写。
Model.find({ "name" : { $regex: /hi.*?bye.*/, $options: 'i' } });
希望有帮助。
答案 1 :(得分:0)
如果您已经将name
拆分为一个数组,则可以使用$all来匹配该数组中的所有项目,这是必需的,因为例如仅通过name
进行检查Robot
。
这可能最终返回Mr. Robot
和Mrs. Robot
。 (可能存在多个使用不同称呼的名字)
因此您必须检查所有元素并确保它们匹配
Model.find( { name: { $all: [ "Mr", "Robot" ] } } ).
如果您不想进行name
拆分,那么Regex也许是可行的方法