Mongodb-获取匹配关键字的简单搜索查询

Mongodb-获取匹配关键字的简单搜索查询,mongodb,Mongodb,我在当前的项目中使用MongoDb,在这个项目中,我使用了一种员工搜索技术,从“员工”集合中的一百万条记录中搜索各种可能的条件。目前我有三个选择来搜索Critiea 1。至少匹配一个单词 2.匹配所有单词 3.匹配准确的短语 在我的数据库中,我必须用两个冒号来匹配这些关键字“EMP\u FULLNAME”和“EMP\u FULLALIAS” 第一个条件为了至少匹配一个单词,我使用了这个查询,它返回所有至少匹配一个单词的记录 db.EMPLOYEES.find({$or :[{"EMP_F

我在当前的项目中使用MongoDb,在这个项目中,我使用了一种员工搜索技术,从“员工”集合中的一百万条记录中搜索各种可能的条件。目前我有三个选择来搜索Critiea

1。至少匹配一个单词 2.匹配所有单词 3.匹配准确的短语

在我的数据库中,我必须用两个冒号来匹配这些关键字“EMP\u FULLNAME”和“EMP\u FULLALIAS

第一个条件为了至少匹配一个单词,我使用了这个查询,它返回所有至少匹配一个单词的记录

    db.EMPLOYEES.find({$or :[{"EMP_FULLNAME":/CARLOS|DOS|SANTOS/,
"EMP_FULLALIAS":/CARLOS|DOS|SANTOS/}]})
第二个条件为了匹配所有的单词,我使用了这个查询,它返回所有记录,其中任何一列中的所有单词都匹配

  db.EMPLOYEES.find({$or :[{"EMP_FULLNAME":"CARLOS DOS SANTOS"},
{"EMP_FULLALIAS":"CARLOS DOS SANTOS"}]})
与精确短语匹配的第三个条件存在于任一列中。-需要帮忙吗


请使用这些搜索条件帮助在mongodb中正确查询这些条件。我被各种各样的情况所困扰。是我创建的搜索条件,正确,因为我的集合中有一百万条记录要匹配。

匹配所有单词,请使用以下正则表达式:

{“$regex:”(?=.*\bCARLOS\b)(?=.*\bDOS\b)(?=.*\bSANTOS\b)。+“$options:“i”}
这意味着所有单词的顺序都是

并习惯于使用这种语法来表示。straight regex表单可以在shell中工作,但在大多数驱动程序中可能需要使用操作符表单

“$options”:“i”
部分用于区分大小写,如果需要的话

我仍然不确定这是否是您真正想要的,因为任何正则表达式匹配都不会有很好的性能,因为最多只能扫描整个索引,也可能是一个集合扫描


我真的认为您需要将您的实际的用例作为一个问题来呈现,以便得到真正的答案。

对于第三个条件,您可以使用$和条件db.EMPLOYEES.find({$和:[{“EMP_全名”:“CARLOS DOS SANTOS”},{“EMP_全名”:“CARLOS DOS SANTOS”}]})@deeputhis将在两列中都存在的情况下返回。如果两列中的名称都正确..或者任何一列您的第二个条件“匹配所有单词”是错误的。它正在尝试匹配任一列中的所有短语。您的第二个条件必须类似于db.EMPLOYEES.find({$or:[{“$and”:[{“EMP_全名”:{$regex:/CARLOS/},{“EMP_全名”:{$regex:/DOS/},{“EMP_全名”:{$regex:/SANTOS/}},{“$and:[{“EMP_全名”:{$regex:/CARLOS/},{$EMP_全名”:},{$regex:/CARLOS/},{“EMP_全名”:{$regex:/DOS/},{“EMP_FULLALIAS”:{$regex:/SANTOS/}]});thnkz..我认为第二个查询应该是第三个条件