繁体   English   中英

mongodb Realm 的动态密钥名称

[英]Dynamic key name for mongodb Realm

我正在为朋友制作数字圣诞日历。 每天他都可以领取 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 时,我想将当前日期插入 object 中的键“claimed_at”,键名为“7”。

我尝试了一些变体:

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

但这不起作用。 起作用的是: "codes.5.date_claimed" 所以一个 static 路径。 在这种情况下,名称为 5 的 object 的 date_claimed 密钥已更新。 但是如何使用带有变量而不是数字的动态路径?

提前致谢!

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

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}}
);

如果动态行为是基于数据库上的信息,如果您可以发送样本数据和预期的 output,那么我们知道您需要什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM