我的数据库中有一个收藏集product
。以下是一个示例文档:
{
"sku_id":"12345678",
"priduct_name":"milk",
"product_rank":3,
"product_price": 2.4
}
我们的收藏中有10万个这样的独特文档。
我想使用$in
查询来查询此集合,如下所示。
db.product.find({"sku_id" :{$in :["12345678","23213"]}}).sort( { product_rank: 1 } )
我们的要求是根据$in
查询来搜索文档,并对文档中的任何字段(asc或desc)进行排序。
我已经为此集合的所有字段创建了正向和反向索引。
注意:sku_id
查询中的$in
数组可以包含1000多个sku_id。
我的疑问是,如果我将$in
之类的过滤器与sku_id
数组一起使用,并在任何字段上获得排序结果,它将使用索引进行排序还是在查询时进行排序?
答案 0 :(得分:1)
Mongo允许您确定查询是否将使用索引。当find操作返回一个游标时,您可以扩展方法链以包括一个explain()命令,该命令完全可以满足您的需求。 (建议您使用db.product.find(...).sort(...).explain('executionStats')
)
它将使用索引进行排序还是在查询时进行排序?
将在查询中使用在product_rank
上创建的索引,但不会单独在sku_id
上使用索引。而是同时使用product_rank
和sku_id
(asc和desc)创建复合索引。