javascript - Mongoose MongoDB : LIKE operator in search

标签 javascript node.js mongodb express mongoose

阅读了一些在 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/

相关文章:

node.js - nodeJS/commonJS module.exports 应该返回什么

node.js - Sails 发生错误请求/400 错误时如何重定向页面?

spring - 将 SSE-Emitter 对象保存到 MongoDB/Redis 中,从数据库中获取它并通过它发送事件

node.js - Mongodb,查找集合是否为空,node.js

javascript - 由于 CORS 策略(javascript、html 和 css)被阻止,程序在 Firefox 中工作但在 chrome 中不工作

php - 如何使用 php 和 ajax 设置倒计时?

javascript - angularJS 过滤日期

javascript - 如何在 HTML 属性中使用 EJS?

javascript - 如何在 sails.js 中创建动态策略

node.js - 不支持选项 [methodName]