gpt4 book ai didi

javascript - Mongoose MongoDB : LIKE operator in search

转载 作者:可可西里 更新时间:2023-11-01 10:03:49 28 4
gpt4 key购买 nike

在阅读了一些在 Mongoose 中使用“LIKE”的解决方案后:

Mongoose.js: Find user by username LIKE value

How to query MongoDB with "like"?

Mongodb dynamic like operator

我正在使用此代码在 Mongoose 中模拟“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,OK。

现在我想用同样的代码,但是用这个词来搜索:

查找:'josephine do' --> 结果:Josephine Doyle

var word = 'josephine do';

好的,也可以...

示例多于作品:

  • 查找:'josephine doyle' --> 结果:Josephine Doyle

  • 查找:'jos doyle' --> 结果:Josephine Doyle

但是,我想解决这个问题:

  • 查找:'doyle josephine' --> 结果:{}
  • 查找:'do josephine' --> 结果:{}
  • 查找:'doyle jo' --> 结果:{}

    (不同的顺序词不起作用)

  • 查找:'约瑟芬

    doyle' --> 结果:{}

    (单词之间超过一个空格不起作用)

有什么建议吗?也许另一个正则表达式?谢谢!

最佳答案

您可以通过拆分字符串并使用 $and 搜索每个单词来完成此操作。

类似于:

var name = 'doyle josephine';

var toSearch = name.split(" ").map(function(n) {
return {
name: new RegExp(n.trim(), 'i')
};
});

User
.find({ $and: toSearch })

关于javascript - Mongoose MongoDB : LIKE operator in search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29648626/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com