MongoDB也以_id排序构建



我有一个复合索引

{ userID:1, connectionStatus: 1, userTargetLastName: 1})

我想支持两个查询:

UserConnection.find( { $and : [ { userID : req.decoded.id }, { connectionStatus : 'accepted' } ] })
                .sort({'_id': -1}).exec()

UserConnection.find( { $and : [ { userID : req.decoded.id }, { connectionStatus : 'accepted' } ] })
                .sort({'userTargetLastName': 1}).exec()

我是否需要第二种化合物索引按_id进行排序,还是"内置"到我的化合物索引中?(根据MongoDB文档,我的化合物索引还应支持用户ID:1,ConnectionStatus:1查询(但是我可以按哪些订单进行排序??

 { userID:1, connectionStatus: 1, created: -1})

您仅在userIDconnectionStatus上查询,因此您的化合物索引无需包括userTargetLastName。这些排序在查询的结果上完成,并且在排序字段上具有索引并不重要,因此在索引中包含_id并不重要。

检查索引使用的最佳方法是将explain()函数与查询使用。这将告诉您有关使用哪个索引的很多信息,以及它的效率(扫描的文档数量等)。

相关内容

  • 没有找到相关文章

最新更新