给定一个大型(数十万)事件文档集合(例如,见下文),在_id 大于的情况下检索第一个事件的性能最高的方法是什么? em>( n )?
{
_id: NumberLong(352757), // Uniqueness guaranteed
type: "BallDropped",
createdAt: "2014-01-01T00:00:00Z",
// ... followed by dynamic properties of unknown size
}
给定许多事件的集合,检索_id>大于35的第一个事件。
首先,使用聚合检索事件的 id 。
我这样做是假设投影阶段(仅返回id)比在未知大小的完整文档上循环更有效。
db.events.aggregate(
{ $project: { _id: 1 } },
{ $match: { _id: { $gt: NumberLong(35) } } },
{ $sort: { _id: 1 } },
{ $limit: 1 }
)
然后,我使用返回的_id调用findOne来检索该文档。
你有什么想法?