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

如何在MongoDB中关联表单与类型集合并转换SELECT字段值?

MongoDB Query to Replace SELECT Field Values with Corresponding key/label Objects?

我现在遇到一个MongoDB查询的需求,想请教一下大家:能不能直接用MongoDB的查询语句实现我的需求,还是必须在后端(比如Node.js)里手动处理结果?

先说明下我的两个集合结构和示例数据:

  1. type集合:用来存储字段的元信息,每个文档包含多个字段属性,字段类型有INPUT、SELECT、MultiSelect等,其中SELECT类型的字段会附带预定义的option数组,每个选项是包含key和label的对象。示例文档如下:
{ 
  id: 't-123', 
  attributes: [ 
    { id: 'a-1', type: 'INPUT' }, 
    { id: 'a-2', type: 'SELECT', option: [ 
      {key: 'DE', label: 'Germany'}, 
      {key: 'US', label: 'United States'} 
    ] } 
  ] 
}
  1. form集合:关联type集合,存储用户填写的表单数据,每个文档的values数组里记录了对应字段ID和用户输入的值(对于SELECT类型,存储的是选项的key)。示例文档如下:
{ 
  id: 'f-1', 
  type: 't-123', 
  values: [ 
    {attribute: 'a-1', value: 'my random string'}, 
    {attribute: 'a-2', value: 'DE'} 
  ] 
}

我的核心需求是:查询form集合时,自动把type为SELECT的字段值,从存储的key替换成对应的{key, label}对象;其他类型的字段则保留原始值。期望的查询结果如下:

{ 
  id: 'f-1', 
  type: 't-123', 
  values: [ 
    {attribute: 'a-1', value: 'my random string'}, 
    {attribute: 'a-2', value: {key:'DE', label:'Germany'}} 
  ] 
}

简单来说,就是查询时需要判断每个字段的类型是否为SELECT,如果是,就根据form里存储的key去type集合的option数组中匹配对应的对象,否则直接保留原值。

想请教下,这个需求能不能直接通过MongoDB的聚合查询或者其他原生查询方式实现?还是说必须先查询出form和对应的type数据,然后在Node.js里手动遍历结果做替换处理?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:19:30