1

在具有以下结构的 130k 元素的集合中:

{
  "tags": ["restaurant", "john doe"]
}

有 40k 个带有“restaurant”标签的文档,但只有 2 个带有“john doe”标签。所以接下来的查询是不同的:

// 0.100 seconds (40.000 objects scanned)
{"tags": {$all: [/^restaurant/, /^john doe/]}}

// 0.004 seconds (2 objects scanned)
{"tags": {$all: [/^john doe/, /^restaurant/]}}

有没有办法优化查询而不对客户端中的标签进行排序?我现在能想象的唯一方法是将不太频繁的标签放在搜索数组的开头。

4

1 回答 1

1

我在 mongodb 团队 JIRA 中找到了一个请求功能:

https://jira.mongodb.org/browse/SERVER-1000

我实现了一个统计系统,将具有更多节奏的标签放在数组的末尾。

于 2012-09-14T00:11:11.167 回答