簡體   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