我对 MongoDB 还很陌生,所以如果这个问题有一个简单的答案,请原谅我。
我正在尝试设计一个跨事件生成文档的“状态”聚合的查询。特别是,我对每个州“花费”的时间感兴趣。
假设我有一个具有以下架构的 MongoDB 集合:
{
timestamp: {type: Number, required: true},
state: {type: Number, required: true}
}
我想生成一个状态列表以及在每个状态中花费的时间。例如,如果我有以下文档(按时间戳排序),
{timestamp: 100, state: 0},
{timestamp: 102, state: 1},
{timestamp: 110, state: 1},
{timestamp: 120, state: 0},
{timestamp: 123, state: 1}
那么我想生成[{state: 0, time: 5}, {state: 1, time: 18}]
第一个条目的时间是由于(102-100)+(123-120)而第二个条目的时间是由于(120-102)。
我知道 Mongo 的聚合框架使用流,因此这种依赖于状态的聚合似乎非常简单。但是,我还没有遇到过这样的机制或这种技术的术语。
有什么建议么?有没有内置的机制来做这样的事情?