Mongo 没有返回任何内容时文本索引未完成
Mongo text index doesn't finish when nothing is returned
我不确定我是否有合适的词汇来描述我遇到的错误,请耐心等待。
这是我 collection
中文档的一般架构
{
_id: ObjectId(),
name: String,
business: String,
address: {
search_type: Character,
address: String,
city: String,
state: String,
zip: Number
}
}
我想根据 address.search_type
进行搜索,所以我在 collection 中为该字段创建了一个文本索引。
{
v: 1,
key: { _fts: 'text', _ftsx: 1 },
name: 'address.search_type_text',
ns: 'admin.customer',
default_language: 'none',
weights: { 'address.search_type': 1 },
language_override: 'language',
textIndexVersion: 3
}
现在我知道我的数据实际上应该只有 C、G 或 T 作为搜索类型,当我 运行 使用支持的 [=] 之一对此 collection 进行查找查询时29=] 查询 运行 很好。
db.collection('blah').find({'address.search_type':'C'}).limit(10).toArray(function(err, result){
if(err) console.log(err);
else console.log(result[0]);
db.close();
});
但是当我 运行 这个带有 address.search_type
的查询应该 return 0 记录我的查询要么永远不会完成要么超时。
db.collection('blah').find({'address.search_type':'Z'}).limit(10).toArray(function(err, result){
if(err) console.log(err);
else console.log(result[0]);
db.close();
});
为什么我的查询没有完成 运行宁/超时,当应该有 0 个文档时,但当它可以找到文档时工作正常?
在试用了不同类型的索引后,我意识到我根本不需要文本索引。
这可能是一个令人尴尬的错误,但嘿,我才刚刚开始学习 mongodb
所以不管怎样。
无论如何,我意识到我需要做的就是在 address.search_type
上创建一个字段索引。
{ v: 1,
key: { 'address.Search_Type': 1 },
name: 'address.Search_Type_1',
ns: 'admin.customer'
}
自从我将语言设置为 none 以来,我仍然不完全确定为什么文本索引不起作用,但我只需要一个索引是有道理的。
我认为文本索引主要用于在较大的文本块中搜索短语或关键字。因此,我的搜索正在寻找单个字符这一事实可能会导致问题,因为这不是文本索引的目的。
我不确定我是否有合适的词汇来描述我遇到的错误,请耐心等待。
这是我 collection
中文档的一般架构{
_id: ObjectId(),
name: String,
business: String,
address: {
search_type: Character,
address: String,
city: String,
state: String,
zip: Number
}
}
我想根据 address.search_type
进行搜索,所以我在 collection 中为该字段创建了一个文本索引。
{
v: 1,
key: { _fts: 'text', _ftsx: 1 },
name: 'address.search_type_text',
ns: 'admin.customer',
default_language: 'none',
weights: { 'address.search_type': 1 },
language_override: 'language',
textIndexVersion: 3
}
现在我知道我的数据实际上应该只有 C、G 或 T 作为搜索类型,当我 运行 使用支持的 [=] 之一对此 collection 进行查找查询时29=] 查询 运行 很好。
db.collection('blah').find({'address.search_type':'C'}).limit(10).toArray(function(err, result){
if(err) console.log(err);
else console.log(result[0]);
db.close();
});
但是当我 运行 这个带有 address.search_type
的查询应该 return 0 记录我的查询要么永远不会完成要么超时。
db.collection('blah').find({'address.search_type':'Z'}).limit(10).toArray(function(err, result){
if(err) console.log(err);
else console.log(result[0]);
db.close();
});
为什么我的查询没有完成 运行宁/超时,当应该有 0 个文档时,但当它可以找到文档时工作正常?
在试用了不同类型的索引后,我意识到我根本不需要文本索引。
这可能是一个令人尴尬的错误,但嘿,我才刚刚开始学习 mongodb
所以不管怎样。
无论如何,我意识到我需要做的就是在 address.search_type
上创建一个字段索引。
{ v: 1,
key: { 'address.Search_Type': 1 },
name: 'address.Search_Type_1',
ns: 'admin.customer'
}
自从我将语言设置为 none 以来,我仍然不完全确定为什么文本索引不起作用,但我只需要一个索引是有道理的。
我认为文本索引主要用于在较大的文本块中搜索短语或关键字。因此,我的搜索正在寻找单个字符这一事实可能会导致问题,因为这不是文本索引的目的。