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

如何在Meteor与MongoDB中获取roles对象的所有字段名?

解决方案

可以实现需求,客户端和服务端都有简洁的实现方式:

客户端实现

拿到查询返回的用户文档后,直接使用JavaScript的Object.keys()方法提取roles对象的键名:

// 假设user是Users.find({_id: userId})返回的文档
const boardNames = Object.keys(user.roles);
// 结果:['internal', 'client', 'other']

服务端(MongoDB聚合实现)

如果希望直接从数据库查询得到目标数组,可以使用MongoDB的聚合管道,通过$objectToArray将对象转为键值对数组,再提取键名:

Users.aggregate([
  { $match: { _id: userId } }, // 匹配目标用户
  { $project: { roles: { $objectToArray: "$roles" } } }, // 将roles对象转为[{k: 'internal', v: [...]}, ...]格式
  { $project: { boardNames: "$roles.k" } }, // 提取所有键名组成数组
  { $replaceRoot: { newRoot: "$boardNames" } } // 将结果直接返回为数组
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:18:19