我需要通过关键字搜索到我的DB的文档,我在mongo的官方网站上找到了这个文档。然而,我有几个问题:
-
我需要首先进行查找,并且mongo希望
$text
搜索作为第一个管道,因此,如果我在查找之后进行查找,那么我将从查找中排除字段。 -
我只需要在一些固定的字段之间搜索,而不是到处搜索。
例如我的文档是这样的:
{
_id: ObjectId('60dcb67ebe94846b27402dc7'),
field1: "dada",
field2: "lalala",
field3: "nanana",
creator: ObjectId('632cb67ebe94846b27402dc1')
}
我需要搜索field1
, field2
和来自创建者的一些字段,让我们说creator.name
,我将在查找后得到。根据文档的第一件事,首先我必须创建一个索引,所以让我们在field1
上做。之后,我必须将$text
聚合放在$match
管道中,但作为其第一个。
你认为有可能先做查找,然后再做$text搜索吗?也可以指定要搜索的字段?
要执行文本搜索查询,必须有文本索引关于你的收藏。一个集合只能有一个文本搜索索引,但是该索引可以覆盖多个字段。不能创建跨多个集合的测试索引。
同时,包含$text
的$match
阶段必须是管道中的第一阶段。