查询引用最多的索引键值?

问题描述:

我们有一个非常大的集合,有几个索引。查询引用最多的索引键值?

由于一个index基本上是与索引字段作为重点,并ObjectID S作为值列表的表,如果我们能够以某种方式获取有Objects最多它所指向的关键,我们想知道。

例如,如果我们有一个集合:

{ _id: 1, a : 1, b : 1 }, 
{ _id: 2, a : 2, b : 2 }, 
{ _id: 3, a : 2, b : 3 }, 
{ _id: 4, a : 2, b : 4 }, 
{ _id: 5, a : 3, b : 4 }, 
{ _id: 6, a : 3, b : 4 }, 
{ _id: 7, a : 4, b : 4 } 

哪里有的 “a” 的指标。 我假设有一个表的地方,看起来是这样的:

index a: 

"1" => [ 1 ], 
"2" => [ 2, 3, 4 ], 
"3" => [ 5, 6 ], 
"4" => [ 7 ] 

在这种情况下,我们想为索引值使用对象的最长列表以某种方式查询 - “2”。

MongoDB中有这种可能吗?

答案是否定的。

实际上,索引没有文档objectId的列表,只是指向数据的指针。要获取文档的objectId,系统必须去磁盘读取它。这就是为什么,如果你有一个索引可以回答你的查询,并且你的结果不需要_id,记得总是project {_id:0,key1:1,key2:1,keyX:1},所以可以返回结果从索引,并没有必要去磁盘。