如何在MongoDB中关联表单与类型集合并转换SELECT字段值?
MongoDB Query to Replace SELECT Field Values with Corresponding key/label Objects?
我现在遇到一个MongoDB查询的需求,想请教一下大家:能不能直接用MongoDB的查询语句实现我的需求,还是必须在后端(比如Node.js)里手动处理结果?
先说明下我的两个集合结构和示例数据:
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'} ] } ] }
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
相关产品推荐
相关产品推荐

