mongodb Mongo聚合查询-符合子字符串范围的字符串仅追加3个点

3lxsmp7m  于 2023-04-29  发布在  Go
关注(0)|答案(1)|浏览(118)

下面的MongoDB查询检索标题和summary字段的前50个字符:

db.posts.aggregate([
    {$match:{_id:ObjectId("642617b84b1f458a6c895c64")}},
    {$project:{_id:0, title:1, summary:{$substrBytes:["$summary", 0, 50]} }}
])

在这个查询中有没有什么方法可以附加三个点。..到符合子串范围的摘要,i.e.摘要字符串长度大于50个字符但没有3个点。..到不在范围内的摘要,我。e.摘要字符串长度小于50个字符?
例如
少于50个字符的摘要显示为:“跟踪猫女试图”
摘要超过50个字符:“一般情况下,上午晚些时候会有几场阵雨。有一个低的机会。..”

u0sqgete

u0sqgete1#

你可以这么做。

db.posts.aggregate([
  {
    $match: {
      "_id": ObjectId("642617b84b1f458a6c895c64")
    }
  },
  {
    "$project": {
      "_id": 0,
      "title": 1,
      "summary": {
        "$cond": [
          {"$lte": [{"$strLenCP": "$summary"}, 50]},
          "$summary",
          {
            "$concat": [
              {"$substrCP": ["$summary", 0, 50]},
              "..."
            ]
          }
        ]
      }
    }
  }
])

mongoplayground.net上试试。

相关问题