You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MongoDB的$split和$size获取仅含单个单词的标题

嘿,这事儿不难!我来给你一步步讲清楚怎么用MongoDB的$split和$size操作符找出那些仅包含单个单词的标题。

核心逻辑

先把标题按空格拆成单词数组,再用$size获取这个数组的长度——如果长度等于1,就说明原标题只有单个单词,这正是我们要找的目标。

直接筛选符合条件的文档

如果你只需要拿到结果文档,不需要额外字段,可以在$match阶段用$expr来嵌套聚合操作符(MongoDB 3.6及以上版本支持这个用法):

db.yourCollection.aggregate([
  {
    $match: {
      $expr: {
        $eq: [
          { $size: { $split: ["$title", " "] } },
          1
        ]
      }
    }
  }
])
带辅助字段的查询(更直观)

要是你想同时看到每个标题的单词数量,方便后续排查,可以先给文档加一个wordCount字段,再筛选数量为1的:

db.yourCollection.aggregate([
  {
    $addFields: {
      wordCount: { $size: { $split: ["$title", " "] } }
    }
  },
  {
    $match: {
      wordCount: 1
    }
  }
])
处理特殊情况(含多余空格的标题)

如果你的标题里有前后空格或者连续多个空格(比如" MongoDB "或"Hello World"),直接拆分可能会得到带空字符串的数组,导致$size计数不准。这时候记得先用$trim去掉首尾空格再拆分:

db.yourCollection.aggregate([
  {
    $match: {
      $expr: {
        $eq: [
          { $size: { $split: [{ $trim: { input: "$title" } }, " "] } },
          1
        ]
      }
    }
  }
])
再唠唠每个操作符的作用
  • $split: ["$title", " "]:把title字段的字符串按空格拆成数组,比如"Hello World"会变成["Hello", "World"]
  • $size: <数组>:返回数组的元素个数,单个单词的标题拆分后长度就是1
  • $trim: { input: "$title" }:清理字符串首尾的空格,避免多余的空元素干扰计数

内容的提问来源于stack exchange,提问作者Sampath chary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:37:30