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

如何从MongoDB集合的数组对象字段中获取唯一user_id值

获取MongoDB数组对象字段中的不重复user_id值

针对你sessions集合里嵌套在members数组对象中的user_id字段,有两种常用方法可以提取所有不重复值:

方法一:使用distinct()函数

MongoDB的distinct()支持直接指定嵌套字段路径,写法简洁高效:

db.sessions.distinct("members.user_id")

执行后直接返回预期的不重复user_id数组:

["11", "23", "73", "59", "37", "28"]

如果需要添加筛选条件(比如只统计特定时间范围内的session数据),只需在第二个参数传入查询条件:

db.sessions.distinct("members.user_id", {
  "members.joined_at": { $gte: ISODate("2023-06-15T00:00:00Z") }
})

方法二:使用聚合框架(适合复杂场景)

如果需要更灵活的逻辑处理(比如多条件过滤、中间数据加工),可以用聚合管道实现:

db.sessions.aggregate([
  // 展开members数组,将每个数组元素转为独立文档
  { $unwind: "$members" },
  // 按user_id分组完成去重
  { $group: { _id: "$members.user_id" } },
  // 格式化输出结构,去掉默认的_id字段
  { $project: { _id: 0, user_id: "$_id" } },
  // 可选:将结果整理为单个数组(若需要直接得到数组而非文档列表)
  { $group: { _id: null, uniqueUserIds: { $push: "$user_id" } } },
  { $project: { _id: 0, uniqueUserIds: 1 } }
])

执行后返回包含目标数组的文档:

{ "uniqueUserIds": ["11", "23", "73", "59", "37", "28"] }

若不需要最终的数组包装,去掉最后两步$group和$project即可得到每个user_id的独立文档。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:27:26