2016-12-03 66 views
-1

我有一个巨大的在monogdb上收集日志事件,每个事件都有一个唯一的id。Mongodb发现发生

一个很简单的例子:

  • 用户登录
  • ...
  • 用户创建一个产品
  • 用户创建一个产品
  • 用户改名产品
  • 用户创建一个产品
  • ...
  • 用户注销

我想找到一个特定发生(比如第三product create事件),我想获取前10事件和这发生后10事件。 这是甚至可能与mongodb?

我使用的是与猫鼬的NodeJS

谢谢!

回答

0

如果您对事件的独特timestamp这将工作:

Model.find({"event": "user created a product"}).skip(2).exec(function (err, docs) 
{ 
    var myEvent = docs[0]; 

    Model.find({timestamp: {$gt: myEvent.timestamp}}).limit(10).exec(function (error, records) 
    { 
     console.log(records); 
    }); 
}); 

更新: 如果你没有为每个事件的时间戳(这是真的错了),这应该工作:

Model.find({"event": "user created a product"}).skip(2).exec(function (err, docs) 
{ 
    var myEvent = docs[0]; 

    Model.find({"_id": { "$lt" : myEvent._id}}).count().exec(function(error,count) 
    { 
     Model.find().skip(count).limit(10).exec(function(e,records) 
     { 
      console.log(records); 
     }) 
    }) 
});