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

MongoDB中如何查找集合内字符串数组的最长元素?

查找MongoDB集合中数组里最长的字符串元素

针对你的Products集合,要找出所有文档的tags数组中长度最长的单个字符串元素,可以通过MongoDB的聚合管道实现:

基础方法(获取单个最长元素)

使用以下聚合查询:

db.Products.aggregate([
  // 将tags数组拆分为单个文档
  { $unwind: "$tags" },
  // 计算每个tag的字符串长度
  { $addFields: { tagLength: { $strLenCP: "$tags" } } },
  // 按长度降序排序,最长的排在最前面
  { $sort: { tagLength: -1 } },
  // 只取第一个结果(即最长的元素)
  { $limit: 1 },
  // 可选:只返回需要的字段,去掉冗余
  { $project: { _id: 0, longestTag: "$tags", length: "$tagLength" } }
])

如果你的MongoDB版本低于3.4(不支持$strLenCP),可以用$strLenBytes替代(纯ASCII字符串下两者结果一致,注意区分字符长度与字节长度的差异)。

进阶:获取所有长度等于最大值的元素

如果存在多个长度相同的最长元素,想要全部获取,可以先找出最大长度,再匹配所有符合条件的元素:

db.Products.aggregate([
  { $unwind: "$tags" },
  { $addFields: { tagLength: { $strLenCP: "$tags" } } },
  // 先找出最大长度,同时收集所有标签及长度
  { $group: { _id: null, maxLength: { $max: "$tagLength" }, allTags: { $push: { tag: "$tags", length: "$tagLength" } } } },
  // 筛选出长度等于最大值的元素
  { $project: { _id: 0, longestTags: { $filter: { input: "$allTags", cond: { $eq: ["$$this.length", "$maxLength"] } } } } }
])

内容的提问来源于stack exchange,提问作者Rafael A P Nascimento

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:42:08