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

MongoDB技术问询:意大利队球员caps提额与特定球员查询需求

MongoDB 数据操作解决方案

嘿,针对你给出的MongoDB球队集合数据,我整理了这两个操作的具体实现方法,一起来看看:

a) 仅为意大利球队的球员将caps字段值提升10%

首先明确,意大利球队对应的联赛是Serie A,我们需要批量更新这些球队下所有球员的caps字段,让它增加10%(即原值乘以1.1)。这里用updateMany结合数组通配符$[]和乘法操作符$mul就能实现:

db.teams.updateMany(
  { league: "Serie A" }, // 匹配意大利联赛的球队
  { $mul: { "players.$[].caps": 1.1 } } // 对数组中所有球员的caps字段乘以1.1
)

$[]作为数组通配符,会匹配文档中players数组的所有元素,刚好满足给意大利球队全体球员提升caps的需求。

b) 查询所有年龄超过30岁且球员ID(p_id)包含字符串“es”的球员

要精准筛选符合条件的球员,用聚合管道处理会更灵活:先展开players数组,再匹配条件,最后按需返回字段:

db.teams.aggregate([
  { $unwind: "$players" }, // 展开players数组,每个球员成为独立文档
  {
    $match: {
      "players.age": { $gt: 30 }, // 匹配年龄超过30岁的球员
      "players.p_id": { $regex: "es", $options: "i" } // 匹配p_id包含"es"的球员,忽略大小写
    }
  },
  { $project: { _id: 0, team_name: "$name", player: "$players" } } // 返回球队名称和球员信息,屏蔽默认_id
])

如果不需要显示球队信息,把$project调整为{ $project: { _id: 0, player: "$players" } }即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:23:38