【问题标题】:Dynamic key name for mongodb Realmmongodb Realm 的动态键名
【发布时间】:2021-11-19 20:11:21
【问题描述】:

我正在为一位朋友制作数字圣诞日历。他每天都可以领取 Steam 游戏。

所以在我为他创建的用户帐户中的 mongodb 中有一个称为代码(对象)的键。结构如下:

_id: blbalbalba
codes: {
   1 : {
      title: GTA V,
      code: AISHD-SDAH-HAUd, 
      claimed_at: ,
   },
   2 : {
      title: Fortnite,
      code: HHF7-d88a-88fa,
      claimed_at: ,
   }
}

只是示例数据。现在在客户端应用程序中,当按下/打开按钮(门)7 时,我想将当前日期插入到键名为“7”的对象中的键“claimed_at”中。

我尝试了一些变体:

const result = await PrivateUserData.updateOne(
  { id: myID },
  { $set: {  "codes.`${door_number}`.date_claimed" : date,   
  } 
  }
);

但这不起作用。起作用的是:“codes.5.date_claimed”。所以是静态路径。在这种情况下,名称为 5 的对象更新了它的 date_claimed 键。 但是如何使用带有变量而不是数字的动态路径呢?

提前致谢!

【问题讨论】:

    标签: javascript mongodb mongodb-realm


    【解决方案1】:

    如果您在调用查询之前知道变量值,我认为以下两种方法都可以工作。

    var door_number=5;
    var date= new Date("...");
    
    const result = await PrivateUserData.updateOne(
      { id: myID },
      { $set : { ["codes."+door_number+".date_claimed"] : date}}
    );
    
    var door_number=5;
    var date= new Date("...");
    
    const result = await PrivateUserData.updateOne(
      { id: myID },
      { $set : { [`codes.${door_number}.date_claimed`] : date}}
    );
    

    如果动态行为基于数据库上的信息,请发送您是否可以采样数据和预期输出,以便我们知道您需要什么。

    【讨论】:

    • 非常感谢!它完美无缺。我错过了 [ ]。门号只是在客户端本地创建。取决于打开的日历门。
    猜你喜欢
    • 2013-07-28
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2017-05-14
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多