【发布时间】:2013-08-06 09:33:31
【问题描述】:
我有一个如下所示的搜索功能:
此搜索的条件作为条件对象传递给MongoDB 的find() 方法,例如:
{
designer: "Designer1".
store: "Store1",
category: "Category1",
name: "Keyword",
gender: "Mens",
price: {$gte: 50}
}
我只是在MongoDB 中了解indexes,所以请多多包涵。我知道我可以在每个单独的字段上创建一个索引,我也可以在几个字段上创建一个多索引。例如,对于一个索引,我可以这样做:
db.products.ensureIndex({designer: 1, store: 1, category: 1, name: 1, gender: 1, price: 1})
如果有人搜索一个类别,而不是一个设计师或商店,就会出现明显的问题,它不会被索引。
我目前正在使用$and 运算符查找这些术语,所以我的问题是:
如何创建一个索引以允许这种类型的灵活搜索?我是否必须为这 6 个术语的每个可能组合创建一个索引?或者,如果我在搜索中使用 $and 是否足以为每个单独的术语编制索引,并且我将获得最佳性能?
【问题讨论】:
-
explain说什么? -
@AjayGeorge 当我在什么上运行它时?
-
@AjayGeorge 是的,但是在哪个查找上?我在问当有多个搜索字段时哪个是最好的系统。你想让我索引每个人,然后在
$andsearch 上做explain? -
不要对所有 6 个字段进行操作,而是选择 2 或 3 并进行练习。单个字段的索引(使用 $and)与复合索引
标签: mongodb database-design mongodb-indexes database