0

我有一个 mongodb 数据库,其中包含数百万个代表事件的文档。每个文档都带有时间戳。我想评估事件之间经过的时间。较长的时间比较短的时间更重要。如何有效地做到这一点?

4

2 回答 2

0

好吧,我认为一个简短的答案是,这可能不是您可以使用查询来计算的东西。您的标签表明您可能正在寻找一个查询来计算它,但我认为这不可能。

听起来像 map reduce 之类的东西在这里也不起作用。

如果您确实需要每个事件之间的计算差异,那么您可能需要研究处理这些值并将结果存储在某处。或者,您可以在插入每个新事件并将它们存储在某处时预先计算它们。

无论如何,听起来你需要编写一些东西来计算它自己的议程并将结果存储在你的某个地方。

于 2013-02-15T04:59:39.740 回答
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()));
                })
        }
    );

可能还有其他方法可以解决这个问题,因为我有很多东西要学习,所以我也会感兴趣。

于 2013-02-16T21:44:53.843 回答