Javascript 用猫鼬查找包含A和X的名称?
我使用的是Mongoose,我想用find()方法处理两个不同的字符串。Javascript 用猫鼬查找包含A和X的名称?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我使用的是Mongoose,我想用find()方法处理两个不同的字符串。 我的数据库中有“Mr.Robot”,但如果用户只键入“Mr.Robot”,由于点的原因,它不会返回任何内容。 因此,我考虑将“Mr Robot”拆分为一个由“Mr”和“Robot”组成的数组,我想返回名称中包含“Mr”和“Robot”的文档。 我试过类似的方法,但没有成功: Model.find({name: /Mr/, name: /Robot/}); 提前谢谢让我们假设你好和再见是两个词。因此,正则表达式应该是这样的
我的数据库中有“Mr.Robot”,但如果用户只键入“Mr.Robot”,由于点的原因,它不会返回任何内容。
因此,我考虑将“Mr Robot”拆分为一个由“Mr”和“Robot”组成的数组,我想返回名称中包含“Mr”和“Robot”的文档。
我试过类似的方法,但没有成功:
Model.find({name: /Mr/, name: /Robot/});
提前谢谢让我们假设
你好
和再见
是两个词。因此,正则表达式应该是这样的:/hi.*?再见。*/
如果我的正则表达式错误,请纠正我。
所以,它们应该是这样的。选项i
表示不区分大小写
Model.find({ "name" : { $regex: /hi.*?bye.*/, $options: 'i' } });
希望有帮助。如果您已经将
名称
拆分为一个数组,您可以使用该数组来匹配该数组中的所有项目,这是必需的,因为如果您仅通过名称
进行检查,例如机器人
这可能会同时返回Mr.Robot
和Mrs.Robot
。(可能存在多个称呼不同的名字)
因此,您必须检查所有元素并确保它们匹配
Model.find( { name: { $all: [ "Mr", "Robot" ] } } ).
如果您不想遵循name
spliting,Regex可能是一种方法