我们有一个非常大的集合,有几个索引。
由于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
中是否可以这样?
答案 0 :(得分:0)
答案是否定的。
实际上,索引没有文档objectId的列表,只是指向数据的指针。要获取文档的objectId,系统必须转到磁盘才能读取它。这就是为什么,如果你有一个索引可以回答你的查询而你的结果中不需要_id
,请记住project {_ id:0,key1:1,key2:1,keyX :1}因此可以从索引返回结果,无需转到磁盘。