Mongodb 如何限制Mongo查询中从字段返回的字符数

Mongodb 如何限制Mongo查询中从字段返回的字符数,mongodb,Mongodb,我正在尝试为我正在处理的博客创建一个帖子列表页面,像往常一样,在这个页面上,我想用“阅读更多”按钮显示一段博客内容(前100个字符左右),以转到帖子详细信息。我迭代这个查询的结果 db.posts.find(); 这给了我每个帖子的标题和正文。我想知道是否有办法将我的mongo查询更改为只提取标题和body字段的前100个字符。多谢各位 您可以使用操作符$project和$substr db.posts.aggregate( [ { $project: {

我正在尝试为我正在处理的博客创建一个帖子列表页面,像往常一样,在这个页面上,我想用“阅读更多”按钮显示一段博客内容(前100个字符左右),以转到帖子详细信息。我迭代这个查询的结果

db.posts.find();
这给了我每个帖子的标题和正文。我想知道是否有办法将我的mongo查询更改为只提取标题和body字段的前100个字符。多谢各位

您可以使用操作符
$project
$substr

db.posts.aggregate(
[
  {
    $project:
      {
        intro: { $substr: [ "$fullText", 0, 100 ] },
        // ...
      }
  } ] )
但是,我不知道这是否具有良好的性能特征。如果不是,使用包含介绍片段的单独字段(例如,
摘要
)可能是一个更好的主意,因为您可以简单地要求MongoDB根本不填充实际的文本字段:

db.posts.find({}, { "fullText" : 0 });
然后帖子看起来像

posts  { 
  fullText : "Lorem Ipsum dolor sit amet .... ",
  teaser: "Lorem Ipsum!"
}

用户是否应该能够修改
intro
则是产品设计的问题,但至少从技术角度来看是可能的,而且查询速度很快。

使用limit,这样您的查询将是
db.posts.find().limit(100)
如果您想按顺序进行排序,它会给出前100条记录,比如最新的first,然后使用limit进行排序
db.posts.find().sort({u id:-1})。limit(100)
db.posts.find().sort({u id::1})。limit(100)