在这个场景中使用Pymongo.

我有一个用户有邮箱,名字,姓氏.

我使用的是这个Pymongo片段:

user_found = users.find({'$or':[
            {'email':{'$regex':searchString, '$options':'i'}},
            {'first_name':{'$regex':searchString, '$options':'i'}},
            {'姓':{'$regex':searchString, '$options':'i'}}]})

如果我想在以下位置找到searchString,这个例子是有效的:

  • 邮箱,或
  • 名字,或

现在我还需要在first_name+姓的组合中查找searchString.

我该怎么做?

推荐答案

最简单的方法是添加一个数组字段,并用所有要搜索的变量填充它.索引该数组字段.

这样一来,你只需要一个索引,所有字段的搜索都很简单,当你想搜索新的搜索变量时,不会改变.您还可以规范化放入搜索数组的文本,例如,降低大小写,删除标点符号等.

https://stackoverflow.com/q/8206188/224370

Edit: MongoDB的文档现在涵盖了keyword search和新的full-text search特性.

Mongodb相关问答推荐

为什么AllowDiskUse不能在$GROUP阶段的聚合管道中工作?

如何在MongoDB中查找和过滤嵌套数组

MongoDB合并按键更新值的对象数组

从MongoDB中的一个非空字段获取值

Select 筛选聚合中的嵌套字段

Tableau 与 Mongo DB Atlas by MongoDB 的连接缓存问题

Golang中的Mongo中值运算

从MongoDB迁移到PostgreSQL:为PostgreSQL编写聚合管道查询

使用 multer 在我的 MERN 前端显示 MongoDB 图像的正确语法是什么?

更快地识别嵌套对象数组中具有重复字段的文档

使用golang的MongoDB错误无法访问服务器

如何在 Mongoose 中定义一个通用的嵌套对象

.insertOne 不是函数

$lookup 结果 mongodb 的计数

在 Nodejs 中找不到模块

Mongoose Schema vs Mongo Validator

启动mongodb和express的正确方法?

获取 mongodb 中所有唯一标签的列表

使用自定义 _id 值时 mongodb 中的 Upserts

验证 MongoCredential 的异常和未分类的 Mongo Db 异常