Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB文本搜索停止词失败_Mongodb_Aggregation Framework - Fatal编程技术网

MongoDB文本搜索停止词失败

MongoDB文本搜索停止词失败,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我试图在我的集合中执行查询,但它没有返回任何内容 这是我的查询: {'$match': {'$text': {'$search': 'a'}}}, {'$group': {'_id': {'texto': '$texto'}, 'somanumero': {'$sum': '$numero'}}} 我的收藏: { "_id" : ObjectId("555cdc4fe13823315537042d"), "texto" : ObjectId("555cdc4fe13

我试图在我的集合中执行查询,但它没有返回任何内容

这是我的
查询

{'$match': {'$text': {'$search': 'a'}}}, 
{'$group': {'_id': {'texto': '$texto'}, 
            'somanumero': {'$sum': '$numero'}}}
我的收藏:

{ "_id" : ObjectId("555cdc4fe13823315537042d"), "texto" : ObjectId("555cdc4fe13823315537042c"), "numero" : ObjectId("555cdc4fe13823315537042e") }
{ "_id" : ObjectId("555cdc5ee13823315537042f"), "numero" : 5, "texto" : "a", "lattexto" : "-15.79506", "lontexto" : "-47.88322" }
{ "_id" : ObjectId("555cdc6ae138233155370430"), "numero" : 10, "texto" : "a", "lattexto" : "-15.79506", "lontexto" : "-47.88322" }
{ "_id" : ObjectId("555cdc73e138233155370431"), "numero" : 3, "texto" : "b", "lattexto" : "-15.79506", "lontexto" : "-47.88322" }
这是我的文本索引:

{
    "v" : 1,
    "key" : {
        "_fts" : "text",
        "_ftsx" : 1
    },
    "name" : "texto_text",
    "ns" : "OSA.teste_texto",
    "default_language" : "portuguese",
    "weights" : {
        "texto" : 1
    },
    "language_override" : "language",
    "textIndexVersion" : 2
}
当我单独使用
$group
$match
时,它会起作用

我做错什么了吗?

来自:

MongoDB支持各种语言的文本搜索。文本索引删除 特定语言的停止词(如英语中的“the”、“an”、“a”, 并使用简单的特定于语言的后缀词干

您的数据存在的问题是,某些记录具有特定于语言的停止字,
a
,在中也被视为停止字。一些停止词包括,
a
位于列表顶部

a
ao
aos
aquela
aquelas
aquele
aqueles
aquilo
as
até
com
como
这些词是从不索引的,因此,无论何时查询停止词,都不会得到任何结果


同时,如果您查询
b
,您将得到结果,因为它不是一个停止词,并且将被索引。

当您只执行
$match
时,响应是什么?一个常见的错误是没有意识到聚合作为一个管道,下一个阶段(在本例中为
$group
)将对第一个(
$match
)的结果起作用。你能分别发布
$match
$group
的结果吗?你是对的。我将默认语言设置为“none”,它就工作了。谢谢。@Batshray你知道有没有办法强迫MongoDB搜索所有单词——覆盖它们当前的行为来搜索停止词?