组合多个查询的Mongodb

组合多个查询的Mongodb,mongodb,rest,mongodb-query,Mongodb,Rest,Mongodb Query,我有一个RESTAPI,在这里我可以得到如下的搜索参数 API查询 { [ { "state": "abc", "country": "IN" }, { "state": "def", "country": "US"

我有一个RESTAPI,在这里我可以得到如下的搜索参数

API查询

{
   [
      {
         "state": "abc",
         "country": "IN"
      },
      {
         "state": "def",
         "country": "US"
      }
   ]
}
Mongodb模式

id | description | state | country
1  |  India      | abc   | IN
2  |  USA        | def   | US
我正在寻找一个优化的查询,以使用一个mongodb查询获得每个API查询行的描述。我正在看嵌套的和

编辑:我不是在寻找排序后的响应

 {
      $and: { [
          $and: [ 
               {"state": "abc", "country": "IN"},
               {"state": "def", "country": "US"}
          ]
     ] }
}

我想知道有没有更好的查询方法来提高查询性能,一个州和国家字段的复合索引?非常感谢您的指点。

您可以使用$and。语法应如下所示

{
   "$and": [
     {"$and": {"state": "abc", "country": "IN"}}, 
     { "$and": {"state": "def", "country": "US"}} 
  ] 
} 

如果您有一个索引one
{state,country}
,如果您按顺序提供它们,它将使用

了解

如果您已经对频繁请求进行了分析,则可以对索引中存储的值进行排序,以便更快地检索。如果您的请求落在第一组国家名称上,您可以将它们存储在索引中的a到z。反之亦然

即使只有州索引和国家索引分开,也有可能会进行索引交叉。在这种情况下,不需要复合索引


我建议您
explain()
了解您的查询以及所有匹配条件(如果您有很多匹配条件)。

此集合的插入和查询顺序为每秒100秒。因为读和写都存在,所以我们也在研究二次读。考虑到存在写操作并且需要创建和排序索引,索引方法是否有助于用例。谢谢当然,我会看看解释计划。还有一点,我不是在寻找排序的响应。好的,如果你有足够的内核、碎片、服务器,即使每秒读取100次,也不会有任何问题。我建议您选择单个索引,并确保mongo将使用索引交集。