如何在 C# 中重命名 mongodb 中嵌套数组的文档字段
How to rename a document field of a nested array in mongodb in c#
在 MongoDB 中给定一个包含以下文档的集合:
{
id: guid,
items: [
{
fieldA : "value"
...
},
{
fieldA : "value"
...
},
]
},
{ ...
}
我必须找到一种使用 C# 将 fieldA 重命名为 fieldB 的有效方法。
在我看来 MongoDB 没有提供可用于数组的重命名运算符。
我尝试了向数组添加新字段的路径,但我不知道如何将该字段设置为旧字段的值。
感谢任何帮助。
谢谢
目前在 MongoDB 驱动程序 2.10.4 中没有类型安全的方法来实现这一点。但是,您可以使用 $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
字段使用从旧数组映射的新数组。
在 MongoDB 中给定一个包含以下文档的集合:
{
id: guid,
items: [
{
fieldA : "value"
...
},
{
fieldA : "value"
...
},
]
},
{ ...
}
我必须找到一种使用 C# 将 fieldA 重命名为 fieldB 的有效方法。 在我看来 MongoDB 没有提供可用于数组的重命名运算符。
我尝试了向数组添加新字段的路径,但我不知道如何将该字段设置为旧字段的值。
感谢任何帮助。 谢谢
目前在 MongoDB 驱动程序 2.10.4 中没有类型安全的方法来实现这一点。但是,您可以使用 $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
字段使用从旧数组映射的新数组。