仅获取数组 mongoose 的最后一个元素

Alo*_*lon 5 mongoose mongodb node.js

我的文档中有数组,我尝试接收该数组的最后一个元素。

我的代码是:

Post.find({_id:postId},{'comments':{'$slice':-1}});
Run Code Online (Sandbox Code Playgroud)

这给了我所有的对象,但注释数组仅包含最后一个元素。

另一方面,

Post.find({_id:postId},{'comments':1});
Run Code Online (Sandbox Code Playgroud)

只给我评论。

我不知道如何将这两个命令组合在一起。怎样才能做到呢?

{
 "users":[],
 "comments":["string1","string2","string3"],
 "lastValue":"Wow"
 "name":"jow"
 "_id": {
    "$oid": "5747d6bdecfae9d0560077cc"
   },
}
Run Code Online (Sandbox Code Playgroud)

谢谢

San*_*esh 5

我希望这有帮助。

db.Post.find(
  { _id: postId },
  { comments: { $slice: -1 }, _id: 0, users: 0, lastValue: 0, name: 0 },
);
Run Code Online (Sandbox Code Playgroud)


ole*_*hko 5

您可能想像这样使用 mongodb(版本 3.2)聚合$slice :

Post.aggregate([
  { 
    $match: { 
      '_id.$oid': postId 
    }
  },
  { 
    $project: {
      comments: {
        $slice: [ "$comments", -1 ] 
      }
    }
  }
]);
Run Code Online (Sandbox Code Playgroud)

在早期版本的 mongodb 中:

Post.aggregate([
  { 
    $match: { 
      '_id.$oid': postId 
    }
  },
  { 
    $unwind: "$comments"
  },
  {
    $group : {
      _id: "$_id.$oid",
      comment: { $last: "$comments" }
    }
  }
]);
Run Code Online (Sandbox Code Playgroud)