使用带有多个属性选项的find

时间:2017-06-29 21:55:43

标签: node.js mongodb mongoose full-text-search

我在React中有一个Web应用程序,我在后端使用一个简单的REST API,我将对象传入Mongo的 find 函数来搜索我的数据库并返回结果

目标的格式如下:

HTTPServer

这将返回我的数据库中的所有文档,其中attribute1包含searchTerm1,attribute2包含searchTerm2等。到目前为止,这部分工作正常,我可以搜索我的属性。

我现在想要做的是让用户选择多个选项并搜索它们的能力。例如,用户可以为attribute1输入searchTerm1和searchTerm2,为attribute2输入searchTerm3,它将返回attribute1 中包含searchTerm1 searchTerm2的所有文档,以及属性2的 searchTerm3。我还没有找到办法做到这一点。

我目前正在做的是在我的前端创建一个包含每个属性的搜索项的数组,但是我不知道如何做后端部分,我实际上将所有这些术语输入到mongoose并进行搜索。

2 个答案:

答案 0 :(得分:0)

基于 -

  

它将返回包含searchTerm1或的每个文档   attribute1中的searchTerm2和attribute2的searchTerm3

相关解决方案将使用$和$或类似 -

{$and: [{searchTerm3}, {$or: [searchTerm1, searchTerm2]}]}

答案 1 :(得分:0)

我明白了。

我只需要或我在字符串中的搜索字词如下:

attribute1: { $regex: "<searchTerm1>|<searchTerm2>|<searchTerm3>", $options: 'i' };

这将在数据库中找到包含searchTerm1,searchTerm2或searchTerm3的attribute1的条目。