首页 > 解决方案 > 使用 mongo 生成动态字段(无聚合)

问题描述

我正在使用 updateOne() 查询来更新我的 Db 中的某些内容。

根据函数返回的值,我将更新不同的字段。所以我尝试动态生成字段以避免多次编写相同的函数。

我的想法是以这种方式将字段存储在模板字符串中:

const expField: string = `teams.${newEvent.data.team}.${newEvent.data.position}`;

然后我用它创建我的查询:

query = {
        $push: {
          evtsGame: newEvent
        },
        $set: {
          expField: goalValue.exp,
          updatedAt: moment().toISOString()
        },
        $inc: {
          scoreField: goalValue.score
        }
      };

然而,在测试查询后,我意识到它创建了一个新字段'expField'而不是类似'teams.team1.attacker'

如何动态生成我的姓名字段?

标签: node.jsmongodbtypescript

解决方案


感谢@Sergio Tulentsev 帮助我解决问题,这里是解决方案:

query = {
        $push: {
          evtsGame: newEvent
        },
        $set: {
          [expField]: goalValue.exp,
          updatedAt: moment().toISOString()
        },
        $inc: {
          [scoreField]: goalValue.score
        }
      };

推荐阅读