我正在使用mongodb,但我遇到了一个问题:
数据为:
{
"_id" : ObjectId("5a956e0b78d363d37f6a2ec4"),
"fieldType" : "Enter Source",
"value" : "Delhi",
"catgeory" : "Generic",
"synonym" : [
"origin name or code",
"from",
"enter source",
"from where",
"fro wher"
]
}
当我使用此查询时
db.getCollection("Rules_DefaultValue").find(
{
"synonym" : "from where"
});
我得到了正确的结果
但是当我使用此查询
db.getCollection("Rules_DefaultValue").find(
{
"$text" : {
"$search" : "where"
}
});
我没有任何结果,所以我再次更改了
db.getCollection("Rules_DefaultValue").find(
{
"$text" : {
"$search" : "wher"
}
});
这一次它起作用了。 因此,我得出一个结论,即“ where”是保留关键字,不能按原样使用它。所以我尝试了转义字符:
"$search" : "\"where\""
但是我没有得到结果。
正在发生相同的情况
and , from , *
请对此提供帮助,如何使用这些单词进行查询。
答案 0 :(得分:1)
在MongoDB中,像where
和from
之类的单词被视为stopwords。这意味着,当您创建文本索引时,这些单词会从索引中消失,因为它们在英语中非常频繁地出现,而FTS的重点是为一些单词建立索引,从而使您可以轻松地找到所需的文档。要解决此问题,可以创建将语言指定为none
的文本索引,请尝试:
db.getCollection("Rules_DefaultValue").createIndex(
{ synonym : "text" },
{ default_language: "none" }
)
然后您的查询应该返回帖子中提到的文档。