gpt4 book ai didi

javascript - 使用 mongoose/mongoDB 创建/更新对象

转载 作者:行者123 更新时间:2023-11-30 20:57:50 25 4
gpt4 key购买 nike

互联网上有很多处理数组的资源,但对象通常更适合数据,而且看起来效率更高。

我想像这样在动态字段名称下存储键值对象:

project['en-US'] = { 'nav-back': 'Go back', ... }
project['pt-BR'] = { 'nav-back': 'Volte', ... }

这样做似乎比保留所有语言的数组并必须过滤它以获得给定语言的所有语言条目更有效。

我的问题是:如何使用 mongoose 将键值对插入具有动态名称的对象中?该对象是否需要存在,或者如果它不在一个操作中,我可以创建它吗?

我试过这个:

await Project.update(
{ _id: projectId },
{
$set: {
[`${language}.${key}`]: value,
},
});

但不管我是否有一个空对象,都没有运气:{ ok: 0, n: 0, nModified: 0 }

奖励:我应该索引这些对象吗?如何索引? (我会想更新单品)

谢谢!

最佳答案

mongoose 中,schema 就是一切。它描述了您要从数据库中读取/存储的数据。如果您想在模式中动态添加新键,那将很难。


在这种特殊情况下,我建议使用 mongodb-native-driver,它对数据操作更加宽松。因此,您可以读取特定格式的数据并动态地将您的字段添加到其中。



继续我的想法,你的动态变化应该如何发生:

  • 使用mongodb-native-driver将新key插入数据库数据
  • 修改代码中的 mongoose 模式(将新 key 插入其中)
  • 之后使用 mongoose 操作数据

不要忘记动态更新您的 Mongoose 模型,否则您将不会在下一次查找时读取新 key 。

关于javascript - 使用 mongoose/mongoDB 创建/更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47470073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com