为什么字段上的索引是不同的大小,具体取决于MongoDB中的索引是升序还是降序

Mat*_*ich 5 sorting indexing mongodb mongodb-query

我的集合中的"已创建"字段有两个单独的索引.一个索引按升序排序,另一个索引按降序排序.按降序排序的索引大于按升序排序的索引.创建的字段包含Javascript Date对象.什么会导致这个?

"indexSizes" : {
    "_id_" : 212862160,
    "created_1" : 136424736,
    "created_-1" : 252376768
},
Run Code Online (Sandbox Code Playgroud)

以下是collection.getIndexes()的详细信息.唯一的区别是在后台创建了降序索引.

{
    "v" : 1,
    "key" : {
        "created" : 1
    },
    "name" : "created_1",
    "ns" : "Production.accounts"
},
{
    "v" : 1,
    "key" : {
        "created" : -1
    },
    "name" : "created_-1",
    "ns" : "Production.accounts",
    "background" : true
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*yHK 2

差异是由于升序索引是在前台创建的,而降序索引是在后台创建的。

来自后台索引创建的文档:

后台索引构建需要更长的时间才能完成,并且导致索引最初比前台构建的索引更大或更不紧凑。随着时间的推移,后台构建的索引的紧凑性将接近前台构建的索引。

因此,如果您希望索引尽可能紧凑,则在前台创建索引,但随着时间的推移,后台索引也会变得更加紧凑。