在阅读了一些使用" LIKE"在猫鼬:
Mongoose.js: Find user by username LIKE value
How to query MongoDB with "like"?
我使用此代码来模拟" SQL LIKE"在猫鼬:
查找:' joseph' - >结果: Josephine Doyle
var word = 'joseph';
User
.find({name: new RegExp(word, 'i')})
.sort('-created')
.exec(function(err, users){
if (err) {
console.log(err);
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(users);
}
});
结果是用户Josephine Doyle,好的。
现在我想使用相同的代码,但用这个词来搜索:
查找:' josephine do' - >结果: Josephine Doyle
var word = 'josephine do';
好的,也有效......
更多例子而不是作品:
查找:' josephine doyle' - >结果: Josephine Doyle
查找:' jos doyle' - >结果: Josephine Doyle
但是,我想解决这个问题:
查找:' doyle jo' - >结果: {}
(不同的订单单词不起作用)
查找:' josephine
道尔' - >结果: {}
(单词之间有多个空格并不起作用)
有什么建议吗?也许是另一个RegEx?谢谢!
答案 0 :(得分:3)
您可以通过拆分字符串并使用$and
搜索每个单词来完成此操作。
类似的东西:
var name = 'doyle josephine';
var toSearch = name.split(" ").map(function(n) {
return {
name: new RegExp(n.trim(), 'i')
};
});
User
.find({ $and: toSearch })