首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mongoDB上实现对用户名和/或名称的用户搜索

在mongoDB上实现对用户名和/或名称的用户搜索
EN

Stack Overflow用户
提问于 2021-03-28 18:53:53
回答 2查看 486关注 0票数 0

我希望用Mongoose在我的MongoDB数据库上实现一个用户搜索,它有一个包含以下字段的用户表:

  • 名称(全名不唯一)
  • 用户名(唯一)
  • 当然还有其他一些领域,如电子邮件、dateCreated等。

我知道如何在或另一个(只匹配用户名或只匹配名称)上进行搜索,但是否可以通过两个字段(匹配用户名或名称)来实现搜索?

例如。

代码语言:javascript
运行
复制
|    Users     | Username |
|--------------|----------|
| Will Riker   | riker01  |
| Bill Reilly  | riker02  |
| Daniel Riker | dan001   |
| James dean   | dean001  |

如果我查询riker,它将返回riker01riker 02dan001

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-28 19:57:16

您可以通过这种方式将$or$regex结合使用:

代码语言:javascript
运行
复制
var word = "riker"
yourModel.find({
  "$or": [
    {
      "user": {
        "$regex": word,
        "$options": "i"
      },
      
    },
    {
      "username": {
        "$regex": word,
        "$options": "i"
      }
    }
  ]
})

注意$options: "i"是如何需要区分大小写的。

您可以检查这个例子

票数 2
EN

Stack Overflow用户

发布于 2021-03-31 06:06:46

您可以在mongo中使用索引$text。您需要做的就是在要搜索的模型字段中添加文本参数:

代码语言:javascript
运行
复制
name: {
  type: String,
  text: true
},
username: {
  type: String,
  text: true
}

运行此命令以使索引与集合db.collection.syncIndexes();同步。

代码语言:javascript
运行
复制
db.users.find({
  $text: {$search: searchkey}
})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66845049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档