假设我在Mongo中有以下数据模型:
{
_id: ...,
name: "...",
obj: {...},
list: [ ... ],
}
现在假设我的“list”数组很长,我不想每次都获取整个文档。因此我想获取“obj”和“name”,但只想获取“list”中的最后5个元素。如何使用Mongo实现?我正在使用pymongo。我认为你正在寻找 $slice
操作符。相关文档请参见这里。
你要查找的语法应该类似于这个:
db.coll.find({}, {obj:1, name: 1, list:{$slice: -5}}); // last 5
请注意,默认情况下,这也会返回_id
字段。如果您不想要_id
,请在obj:1
之前添加_id:0
。这是JS语法,但Python语法将非常相似。
使用$slice运算符来限制数组元素
GeoLocation.find({},{name: 1, geolocation:{$slice: -5}})
.then((result) => {
res.json(result);
})
.catch((err) => {
res.status(500).json({ success: false, msg: `Something went wrong. ${err}` });
});
其中 geolocation 是一个数据数组,我们从中获取最后 5 条记录。