MongoDB和Mongoose中如何限制子文档数量

4

当涉及到MongoDB和Mongoose时,我是个新手,请见谅...

我正在使用Node和Express以及Mongoose。我有一个包含大量子文档的文档,这使得我的服务器在尝试加载所有子文档时耗尽了内存。因此,我想选择子文档的最后30项。以下是我现在拥有的内容,以及我认为我想要的内容的猜测...

Device.findOne({ device_id: deviceId }, (err, device) => {
        ....
})

这里猜测一下

Device.findOne({ device_id: deviceId }, { movements: { $slice: 30 } }, (err, device) => {
        ....
})

任何帮助都将是非常棒的,提前感谢!

你试过了吗?这可能是正确的。 - Israel Zinc
那似乎给了我前30个而不是后30个。:( - gregwinn
1个回答

8

你做得很好。

要获取最后30个值,只需使用减号即可。在你的情况下,你可以这样做:

Device.findOne({ device_id: deviceId }, { movements: { $slice: -30 } }, (err, device) => {
        ....
})

希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接