Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 变量查询的索引策略是什么?_Mongodb - Fatal编程技术网

Mongodb 变量查询的索引策略是什么?

Mongodb 变量查询的索引策略是什么?,mongodb,Mongodb,最常见的用例可能是一个用户表,其中包含名称、lname、电子邮件和电话 我可能会搜索包含“paul”的姓名,电子邮件包含2@yahoo" 我可能会搜索电话=01234567890 我可能会搜索电子邮件=”foo@bar.com" 我的理解是,在mongo中,索引是按顺序工作的 姓名:1、姓名:1、电子邮件:1、电话:1对上述任何查询都不起作用 对于这样的搜索表,最好的索引策略是什么?因此,您需要先创建索引定义,然后才能运行查询。在Atlas Data Explorer的“集合”视图中创建第一个搜

最常见的用例可能是一个用户表,其中包含名称、lname、电子邮件和电话

我可能会搜索包含“paul”的姓名,电子邮件包含2@yahoo"

我可能会搜索电话=01234567890

我可能会搜索电子邮件=”foo@bar.com"

我的理解是,在mongo中,索引是按顺序工作的 姓名:1、姓名:1、电子邮件:1、电话:1对上述任何查询都不起作用


对于这样的搜索表,最好的索引策略是什么?

因此,您需要先创建索引定义,然后才能运行查询。在Atlas Data Explorer的“集合”视图中创建第一个搜索索引定义可能很棘手

以下是我推荐的基于这些文档的索引定义:

{
  "mappings": {
    "fields": {
      "email": {
        "analyzer": "lucene.keyword",
        "type": "string"
      },
      "phone": {
        "analyzer": "lucene.keyword",
        "type": "string"
      },
      "name": {
        "analyzer": "lucene.keyword",
        "type": "string"
      },
      "lname": {
        "analyzer": "lucene.keyword",
        "type": "string"
      }

    }
  }
}
对于电子邮件和姓名字段上的contains样式查询,我建议如下:

  { 
       $search: {
        index: 'default',
        compound: {
          must: [{
            wildcard: {
              query: '*paul*',
              path: 'name'
              }
            },{
            wildcard: {
              query: '*2@yahoo*',
              path: 'email'
            }
        }]
      }
   }
}

应该是一个闪电般快速的查询,即使是对于一个大的索引,并且是您描述的多个子句之一。如果您还有任何问题,请告诉我。有很多功能,例如突出显示,也应该很有帮助。请注意,此查询是一个单子句。如果您想要多个子句,请将此子句嵌入
composite
操作符如图所示。

您应该看看MongoDB Atlas Search。您可以通过通配符索引轻松完成这项工作。您想要一个示例查询吗。@不错,是的,这看起来就像我要找的!如果您想要自动完成等功能,您可以通过Atlas Search实现所有这些功能。所以,请继续如果下面的方法是正确的,请告诉我。我还添加了您建议的查询。这对您来说非常有效。如果您经常更新文档,您需要确定最终的一致性。对于大多数搜索查询,这是可以的。数据应能相对快速地复制。这太棒了,谢谢。我将试一试,但它看起来正是我想要的