我有一个包含以下文档的集合:
{
"_id":{
"$oid":"60c5316cbc885e00c6e5abeb"
},
"name":"<name>",
"addedAt":{
"date":{
"$date":"2021-06-12T22:13:00.316Z"
},
"timestamp":1623535980.316648
},
"lastUsed":{
"date":{
"$date":"2021-06-22T14:17:23.339Z"
},
"timestamp":1624371443.339323
},
"connStr":"http://<user>:<pwd>@<host>:<port>",
"resetIpUri":"http://<host>:<port>/api/changeIP?apiToken=<token>",
"lastResetIP":1623535980.316648
}
还有非常简单的查询:
db.collection.find({connStr: <connStr>})
db.collection.find({}).sort({"lastUsed.timestamp": 1})
但我不太确定是需要为字段conStr
使用文本索引,还是使用常规索引?我无法理解文本索引是如何工作的,当我有任务根据文档的值查找文档时,我是否总是需要使用它们?如果是,我应该对整数字段还是浮点字段使用文本索引?
文本索引和常规索引完全不同,应该在完全不同的场景下使用。
如果:,则转到正常索引
您将匹配键的确切字符串值,或者对存储的字符串值使用Regex
操作。
您正在寻找的是正常指数。
如果:,则转到文本索引
为了便于搜索,您希望对键的值进行词干处理。例如,词根like
的词干是:likes
、liked
、likely
、liking
等。所有这些都是词根like
的词干。
如果你想搜索一个键值,比如教科书名称或描述,你可以使用text
索引,并对该键执行文本搜索,这将对所有单词执行词干搜索。
注意:我不是MongoDB文本索引专家,只是对它有一个模糊的概念。欢迎任何更正和编辑。