OR +的复合索引在mongodb中排序查询

tar*_*war 5 mongodb

对于此OR查询:

db.messages.find({ $or: [ { to: { $ne: null }, from: "xyz" }, { to: "xyz" } ] }).sort({_id: -1}).limit(50)
Run Code Online (Sandbox Code Playgroud)

以下指数:

{to:1, from: 1, _id:-1} and {from:1, to:1, _id:-1}
Run Code Online (Sandbox Code Playgroud)

mongo总是在进行全面扫描.

我希望mongo可以使用这两个索引并合并结果.

我是否需要将其拆分为两个查询(每个OR子句一个)并合并自己?或者是否有其他指数可以帮助?

dcr*_*sta 4

这是一个已知问题,https://jira.mongodb.org/browse/SERVER-1205,如果它对您的用例非常重要,您可以投票。