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

在mongoDB上实现对用户名和/或名称的用户搜索,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,我希望使用Mongoose在我的MongoDB数据库上实现用户搜索,它有一个包含以下字段的用户表: 名称(全名不唯一) 用户名(唯一) 当然还有其他字段,如电子邮件、dateCreated等 我知道如何在或其他字段(仅匹配用户名或仅匹配名称)上进行搜索,但是否可以通过两个字段(匹配用户名或名称)实现搜索 例如 如果我查询riker,它将返回riker01,riker02和dan001,您可以通过以下方式使用: var word = "riker" yourModel.fi

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

  • 名称(全名不唯一)
  • 用户名(唯一)
  • 当然还有其他字段,如电子邮件、dateCreated等
我知道如何在或其他字段(仅匹配用户名或仅匹配名称)上进行搜索,但是否可以通过两个字段(匹配用户名或名称)实现搜索

例如

如果我查询
riker
,它将返回
riker01
riker02
dan001
,您可以通过以下方式使用:

var word = "riker"
yourModel.find({
  "$or": [
    {
      "user": {
        "$regex": word,
        "$options": "i"
      },
      
    },
    {
      "username": {
        "$regex": word,
        "$options": "i"
      }
    }
  ]
})
请注意,
$options:“i”
必须区分大小写

您可以通过以下方式选择使用:

var word = "riker"
yourModel.find({
  "$or": [
    {
      "user": {
        "$regex": word,
        "$options": "i"
      },
      
    },
    {
      "username": {
        "$regex": word,
        "$options": "i"
      }
    }
  ]
})
请注意,
$options:“i”
必须区分大小写

您可以检查

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

name: {
  type: String,
  text: true
},
username: {
  type: String,
  text: true
}
运行此命令可将索引与集合同步
db.collection.syncIndexes()

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

name: {
  type: String,
  text: true
},
username: {
  type: String,
  text: true
}
运行此命令可将索引与集合同步
db.collection.syncIndexes()

检查这个:检查这个:和