我正在使用MongoDB,(在Node.js上为Mongoose),我有一个很大的事件数据库,每个事件都有一个字段seq
(序列),即事件的顺序。我想让我的用户找到给定事件的所有发生。
例如:用户正在搜索事件“ ButtonClicked”,我应该返回该事件发生的所有位置,在本示例中为[239,1992,5932]
这很容易,我可以搜索所请求的事件,然后返回该seq
字段。现在,我想让用户查看特定之前的20个事件和之后的20个事件seq
。
如果我可以做这样的事情,那就太好了:
db.events.find( { id:"ButtonClicked", seq: 1992 } ).before(20).after(20);
我怎样才能做到这一点?
请注意,该字段seq
可以以任何数字开头,并且可以跳过数字,但是它是递增的!例如:[3,4,5,6,7,12,13,15,56,57 ...]
另外,请注意,该解决方案可以忽略seq
,我提到了此字段,因为我认为它可以帮助解决方案。
谢谢!
您可以使用比较查询运算符,尤其是$gte
和$lte
,seq
用作比较的偏移量。
尝试:
var seqOffset = 1992;
db.events.find( { seq: { $gte: seqOffset - 20, $lte: seqOffset + 20 } } );
由于您提到的seq
可能会跳过数字,因此您无法准确获得40个事件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句