我的数据库中有一个 requests 表,其中包含几个字段,例如“pending”表示请求是否未得到服务,“expiry”表示以毫秒为单位跟踪过期时间(Epoch),“count”表示每次触发请求时倒计时到 0。
现在我搜索请求已过期或计数已降至 0 且待处理为真的所有请求。然后我根据到期时间订购结果。
我确实尝试为此创建一个索引,但根据我的 explain() 命令的结果,我确信 MongoDB 没有使用该索引。关于这种查询的复合索引应该是什么的任何建议?
通俗地说,查询本质上是 (A OR B) AND C 由 C 排序
那是我通过 Morphia、Java 构建的查询(我是 MongoDB 新手)->
query.and(query.criteria("pending").equal(true));
query.or(query.criteria("count").equal(0), query.criteria("expiry").lessThan(System.currentTimeMillis()));
query.order("expiry");