【发布时间】:2015-08-31 05:24:44
【问题描述】:
我的集合中的“created”字段有两个单一索引。一个索引按升序排序,另一个按降序排序。降序排序的索引大于升序排序的索引。 created 字段包含一个 Javascript Date 对象。这是什么原因造成的?
"indexSizes" : {
"_id_" : 212862160,
"created_1" : 136424736,
"created_-1" : 252376768
},
这是来自 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
}
【问题讨论】:
-
现在这是一个公平的问题。有点想知道为什么“升序”形式的大小小于
_id索引。作为记录,如果ObjectId已经是“单调的”或“一直在增加”,那么您可能会认为_id是您收藏中“创建顺序”的自然指标。当然,除非您出于其他原因需要时间戳。 -
created 中存储的值的类型是什么?你能重现这个吗?我尝试了一个简单的 mongo 集合,并且索引大小对于升序/降序是相同的
-
后台索引最终会大于在前台创建的索引。此外,您不需要同时创建升序和降序版本,因为单字段索引的顺序无关紧要。
标签: mongodb sorting indexing mongodb-query