给定一个在 MongoDB 中包含以下文档的集合:
{
id: guid,
items: [
{
fieldA : "value"
...
},
{
fieldA : "value"
...
},
]
},
{ ...
}
我必须找到一种使用 C#将fieldA重命名为fieldB的有效方法。在我看来,MongoDB 没有提供可用于数组的重命名运算符。
我尝试了向数组添加新字段的路径,但我不知道如何将该字段设置为旧字段的值。
任何帮助表示赞赏。谢谢
目前在 MongoDB Driver 2.10.4 中没有类型安全的方法来实现这一点。但是,您可以使用 a 构建聚合管道$map
并将其作为更新管道执行。
var db = client.GetDatabase("test");
var collection = db.GetCollection<MyClass>("data");
var filter = Builders<MyClass>.Filter
.Empty;
var update = Builders<MyClass>.Update.Pipeline(
new PipelineStagePipelineDefinition<MyClass, MyClass>(
new PipelineStageDefinition<MyClass, MyClass>[]
{
@"{ ""$addFields"": {
items: {
$map: {
input: ""$items"",
as: ""item"",
in: {
fieldB: ""$$item.fieldA""
}
}
}
}
}"}));
await collection.UpdateManyAsync(filter, update)
.ConfigureAwait(false);
这是通过运行管道并使用管道的输出更新每个文档来工作的,上面是一个简单的管道,它用从旧数组映射的新数组替换items
新items
字段的字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句