我有一个拥有数百万个代表事件的文档的mongodb数据库。每个文档都有时间戳。我想评估事件之间的过去时间。更长的时间比更短的时间更重要。如何有效地完成这项工作?
答案 0 :(得分:0)
嗯,我认为一个简短的回答是,这可能不会是您可以使用查询计算的东西。你的标签表明你可能正在寻找一个查询来计算这个,但我认为这不可能。
它也听起来像地图缩小之类的东西也不会在这里工作。
如果您确实需要在每个单个事件之间计算出差异,那么您可能需要查看对这些值的处理并将结果存储在某处。或者,您可以在插入每个新事件并将其存储在某个位置时预先计算它们。
无论如何,这听起来好像你需要编写一些能够根据自己的议程计算出来并将结果存储在某个地方的东西。
答案 1 :(得分:0)
我已经能够获得以下代码。
db.main.find()
.forEach(function(doc){
//print('got1 id: ' + doc._id);
db.main.find({'_id': {$gt: doc._id}, user: doc.user})
.sort({'_id': 1})
.limit(1)
.forEach(function(doc2){
//print('got2 id: ' + doc2._id);
print(doc._id + ': ' + (ISODate(doc2.startT).getTime() - ISODate(doc.startT).getTime()));
})
}
);
我可能还有其他方法可以解决这个问题,因为我有很多需要学习的地方。