MongoDB在查找结果前后获取行

吉兰兰

我正在使用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$lteseq用作比较的偏移量。

尝试:

var seqOffset = 1992;
db.events.find( { seq: { $gte: seqOffset - 20, $lte: seqOffset + 20 } } );

由于您提到的seq可能会跳过数字,因此您无法准确获得40个事件

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章