MongoDB 与 Mongoose 限制子文档

gre*_*inn 3 mongoose mongodb node.js

我是 MongoDB 和 Mongoose 的菜鸟,所以请原谅我...

我正在使用 Node 和 Express 以及 Mongoose。我有一个包含大量子文档的文档,以至于我的服务器在尝试加载所有子文档时内存不足。所以我想选择子文档的最后 30 个项目。这是我现在拥有的,然后猜测我认为我想要什么......

Device.findOne({ device_id: deviceId }, (err, device) => {
        ....
})
Run Code Online (Sandbox Code Playgroud)

这是一个猜测

Device.findOne({ device_id: deviceId }, { movements: { $slice: 30 } }, (err, device) => {
        ....
})
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒,提前致谢!!!

Isr*_*inc 5

你差点就搞定了。

要获得最后 30 个值,只需使用减号即可。在您的情况下,您可以执行以下操作:

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

希望它有所帮助。