0

给定一个大型(数十万)事件文档集合(例如见下文),检索_id大于( 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 来检索该文档。

你觉得呢?你有没有什么想法?

4

0 回答 0