【发布时间】:2020-06-28 19:22:03
【问题描述】:
我有一个具有以下结构的集合(用户):
{
propA: {
words: ["i", "have", "an","important", "question"]
}
}
我想从数据库中获取自动完成选项,以便在我的网站中输入一些内容。 所以首先,我认为我需要为 propA.words 创建一个索引。 也许是这样的(?):
db.users.createIndex({ "propA.words" : 1 })
其次,我如何查询这个索引以获取所有以 X 开头的单词? 例如,对于字符串“i”,查询将检索 ["i", "important"]。
谢谢!
编辑: 这是合集:
{
propA: {
words: ["aa","bb","cc","dd"]
}
}
{
propA: {
words: ["ab"]
}
}
{
propA: {
words: []
}
}
{
propB: []
}
现在,我想要一个查询来获取所有以“a”开头的单词。 查询应在上述集合上返回 ["aa","ab"]。 我希望查询只使用索引,这样搜索才会高效。
【问题讨论】:
-
您可以使用正则表达式搜索,使用$regex。
-
但是创建索引后,我只是查询用户集合,它会自动使用索引?
-
是的,当您将该字段用作查询过滤器的一部分时,将使用索引(取决于您的查询过滤器字段和其他索引)。但是,通过正则表达式查询来有效地使用索引,您必须使用 starts with 条件 -
{ name: { $regex: '^jac' } }。见$regex and index usage。 -
但是我有一个字符串列表,而不是字符串属性
标签: mongodb