你如何限制Mongo中的数组子元素?

时间:2012-07-21 20:27:50

标签: mongodb pymongo

假设我在Mongo中有以下数据模型:

{
   _id: ...,
   name: "...",
   obj: {...},
   list: [ ... ],
}

现在让我们说,我的list数组非常长,我不想每次都抓取整个文档。所以我想获得objname,但只获取list中的最后5个元素。你如何使用Mongo做到这一点?我正在使用pymongo。

2 个答案:

答案 0 :(得分:19)

我认为您正在寻找$slice运营商。文档为here

您正在寻找的语法是这样的:

db.coll.find({}, {obj:1, name: 1, list:{$slice: -5}}); // last 5

请注意,默认情况下,这也会返回_id字段。如果您不希望在_id前面_id:0添加obj:1。这是JS语法,但python语法非常接近。

答案 1 :(得分:0)

使用 $ 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}` });
});

其中,地理位置是数据数组,从中我们得到最后5条记录。