给定MongoDB中包含以下文档的集合:
{
id: guid,
items: [
{
fieldA : "value"
...
},
{
fieldA : "value"
...
},
]
},
{ ...
}
我必须找到一种有效的方法来使用C#将 * fieldA * 重命名为 * fieldB *。在我看来,MongoDB没有提供可用于数组的重命名操作符。
我尝试使用该路径向数组中添加新字段,但不知道如何将该字段设置为旧字段的值。
任何帮助都是感激的。谢谢
2条答案
按热度按时间rqenqsqc1#
目前MongoDB驱动程序2.10.4中还没有类型安全的方法来实现这一点,但是,您可以使用
$map
构建一个聚合管道,并将其作为更新管道执行。这是通过运行管道并用管道的输出更新每个文档来实现的,上面是一个简单的管道,它用新的
items
字段替换items
字段,新的items
字段具有从旧数组Map的新数组。f4t66c6m2#
除了Kevin Smith的答案之外,这里还有一个helper函数,它也Map所有现有字段,并且只对数组中存在旧字段名的记录执行更改。
使用这个函数时要记住的几件事,这只是单层深度,它不能处理某些字段被部分转换的情况,尽管后者一开始就不应该是一个东西。
这使用了C#11中新的原始字符串特性,使工作变得更容易。