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

时间:2017-10-09 20:18:08

标签: mongodb mongodb-query mongodb-indexes

我们有一个非常大的集合,有几个索引。

由于index基本上是一个以索引字段为键的表,以及ObjectID的列表作为值,我们想知道我们是否能够以某种方式获得具有最高数量的密钥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中是否可以这样?

1 个答案:

答案 0 :(得分:0)

答案是否定的。

实际上,索引没有文档objectId的列表,只是指向数据的指针。要获取文档的objectId,系统必须转到磁盘才能读取它。这就是为什么,如果你有一个索引可以回答你的查询而你的结果中不需要_id,请记住project {_ id:0,key1:1,key2:1,keyX :1}因此可以从索引返回结果,无需转到磁盘。