MongoDB聚合以查找值大于n的第一个文档

时间:2014-04-09 15:40:12

标签: node.js mongodb mongojs

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

你有什么想法?

0 个答案:

没有答案