【问题标题】:Renaming long MongoDB column names to shorter ones, in a live app在实时应用程序中将长 MongoDB 列名重命名为较短的列名
【发布时间】:2014-03-03 05:53:45
【问题描述】:

像大多数来自关系背景的人一样,我们坚持使用相当大的列名。现在代码 + 应用程序已编码和测试。但是 Mongo 最佳实践注意到 key names should be short 因为每个列名都存储在每个文档中。更复杂的是,我们直接使用 Mongo 驱动程序,没有像 Morphia 等任何映射层。

让我改写一下: 即使我使用 $rename 重命名列,客户端 APP 仍然使用较长的名称。然后我需要做某种 JSON 转换,在每一个输出和输入的文档上:输出 {U: "", C:""} 需要变成 {Updated:"", Created: ""} .进场时反之亦然。

【问题讨论】:

  • 您是否在询问更新 mongo 集合中的字段名称是在询问如何更新您的代码?您能否编辑您的问题以更清楚地说明这一点。
  • 这不是一个最佳实践,只是一些人的意见。您应该真正评估情况并了解您是否真的需要这个。我应该提一下,您陈述的原因并不是字段名称占用如此多空间的原因。原因是目前还没有压缩字段名称,但希望很快就会改变

标签: mongodb key rename


【解决方案1】:

您可以使用$rename 操作符通过多次更新来重命名所有记录中的键,这会更新字段的名称:

db.collection.update({}, {$rename:{"foo":"bar"}}, false, true);

false 用于更新插入,true 用于多次更新。

【讨论】:

  • 我还可以使用 "foo.bar1":"foo.bar2" 重命名嵌套键
  • 有没有办法重命名数组的键?假设 foo.bar 是一个包含 [{"name":"n1"},{"name":"n2"}] 的数组。我们如何将“name”更改为“firstName”?
猜你喜欢
  • 2020-09-20
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多