如何配置mongodb索引,以便在时间范围内按值排序?

如何配置mongodb索引,以便在时间范围内按值排序?,mongodb,indexing,Mongodb,Indexing,我有一个像下面这样的收藏 tx_collection - value - from - to - timestamp 我想从集合中提取的是特定时间段内的最高100个值 比如说, db.getCollection('tx_collection').find({"timestamp":{$gte:ISODate("2018-01-10T00:00:00.000Z")}}).sort({"value":-1}).limit(100) 为了提高查询性能,我创建了如下索

我有一个像下面这样的收藏

tx_collection
    - value
    - from
    - to
    - timestamp
我想从集合中提取的是特定时间段内的最高100个值

比如说,

db.getCollection('tx_collection').find({"timestamp":{$gte:ISODate("2018-01-10T00:00:00.000Z")}}).sort({"value":-1}).limit(100)
为了提高查询性能,我创建了如下索引

{value: -1, timestmap: 1}
但是,当我使用索引运行find查询时,花费了太多时间,超过10秒

其中一个测试查询是这样的

db.getCollection('tx_collection').find({"timestamp": {$gte: ISODate("2019-10-16T22:09:12.000Z")}}).sort({"value":-1}).limit(100)
因此,当我再次尝试使用
executionStats
时,inputStage
IXSCAN
nreturn
为>100。 我所期望的回报是100

我的问题是,我的索引设置是否错误?如果是错误的,什么是正确的索引?
(这是我之前问过的。当前案例与linke案例有点不同)

这是自我解决

在充分阅读和理解之后,我终于下定决心

后续查询如下所示:

db.getCollection('tx_collection').find({"value": {$gte: 0}, "timestamp": {$gte: ISODate("2019-10-16T22:09:12.000Z")}}).sort({"value":-1}).limit(100)
索引
{value:-1,timestmap:1}


添加额外的查询前缀,
{“value”:{$gte:0}
,可以使用索引。

请在post中包含
解释
输出(使用“executionStats”模式)@prasad_uu感谢您的回复。我终于解决了这个问题。您可以发布一些关于您如何解决这个问题的详细信息;这对以后访问此页面的其他人很有用。谢谢。