MongoDB string欄位索引策略

2021-09-19 03:19:07 字數 956 閱讀 4176

在研究mongodb的索引是發現乙個奇怪的問題,給乙個string型別的field設定text索引,但是在查詢的時候並沒有使用索引。比如:

db.tomcat_access_logs.ensureindex( );

db.tomcat_access.logs.find( ).explain();

db.tomcat_access_logs.find( ).explain();

explain()的結果可以發現,在查詢的時候只用了basiccursor,也就是說沒有使用索引。

後發現只有當使用$text查詢的時候才會用到text索引:

db.tomcat_access_logs.find(  } ).explain();

只不過這樣的話,就沒有辦法針對某個特定field進行查詢了,因為$text是對所有text索引的field進行的全文搜尋。此時只需要做一般的索引即可:

db.tomcat_access_logs.ensureindex(  );

db.tomcat_access.logs.find( ).explain();

db.tomcat_access.logs.find( ).explain();],[

/.*1.*/,

/.*1.*/]]

},...

}

使用db.collection.find( )或者db.collection.find( ),不會使用的text索引,而是一般索引。

建立了text索引後,只能對text索引包含的所有字段進行全文搜尋,無法對某個字段進行搜尋

一般索引和text索引可以同時建立,以滿足不同查詢需求

Mysql 新增字段 修改字段 刪除字段

alter table 表名 add 欄位名 字段型別 字段長度 default 預設值 comment 注釋 例如 alter table order add code char 6 default null comment 優惠碼 2 修改字段 修改欄位名 字段型別 長度 a 修改欄位名 alt...

Mysql 新增字段 修改字段 刪除字段

alter table 表名 add column 欄位名 字段型別 字段長度 default 預設值 comment 注釋 例如 alter table order add column code char 6 default null comment 優惠碼 2 修改字段 修改欄位名 字段型別 ...

oracle增加字段 刪除字段 修改字段型別

增加一列 alter table emp4 add test varchar2 10 修改一列 alter table emp4 modify test varchar2 20 刪除一列 alter table emp4 drop column test 這裡要注意幾個地方,首先,增加和修改列是不需...