繁体   English   中英

未返回任何内容时,Mongo文本索引未完成

[英]Mongo text index doesn't finish when nothing is returned

我不确定我是否有合适的词汇来描述我所承受的错误。

这是我收藏中的文档的一般架构

{
   _id: ObjectId(),
   name: String,
   business: String,
   address: {
      search_type: Character,
      address: String,
      city: String,
      state: String,
      zip: Number
   }
}

我想基于address.search_type进行搜索,因此我为集合中的这些字段创建了文本索引。

{ 
  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作为搜索类型,并且当我使用支持的search_types之一对此集合运行查找查询时,查询运行就很好。

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();
});

但是,当我使用应返回0个文档的address.search_type运行此查询时,我的查询永远不会完成或超时。

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,我仍然不确定为什么文本索引不起作用,但是我所需要的只是一个索引。

我认为文本索引主要用于搜索较大文本块中的短语或关键字。 因此,我的搜索正在寻找单个字符的事实可能已引起问题,因为这不是文本索引的预期用途。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM