我有一个mongodb数据库,里面有数百万个代表事件的文档。每个文档都有时间戳。我想评估事件之间经过的时间。较长的时间比较短的时间更重要。怎样才能有效地做到这一点呢?
发布于 2013-02-17 05:44:54
我已经能够让以下代码正常工作。
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()));
})
}
);也许还有其他方法可以解决这个问题,我也会感兴趣,因为我有很多东西要学。
发布于 2013-02-15 12:59:40
我想一个简短的答案是,这可能不是你可以使用查询来计算的东西。您的标记表明您可能正在寻找一个查询来计算此值,但我认为这是不可能的。
听起来像map reduce这样的东西在这里也行不通。
如果你真的需要计算每个事件之间的差异,那么你可能需要研究一下这些值并将结果存储在某个地方。或者,您可以在插入每个新事件并将其存储在某个位置时预先计算它们。
无论如何,听起来你只是需要编写一些东西来计算它自己的议程,并将结果存储在某个地方。
https://stackoverflow.com/questions/14888467
复制相似问题