如何在c#中的mongodb中重命名嵌套数组的文档字段

斯巴达科

给定一个在 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);

这是通过运行管道并使用管道的输出更新每个文档来工作的,上面是一个简单的管道,它用从旧数组映射的新数组替换itemsitems字段的字段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在MongoDB中重命名文档字段?

MongoDB:如何在嵌套数组中设置字段值

如何从嵌套数组中获取字段和值并查询它们以在 mongodb 中查找文档?

MongoDB:如何从嵌套数组中的文档中删除对象

Mgo如何在嵌套数组中查找嵌套文档?

mongodb:如何更新单个文档的嵌套数组项中的多个字段

如何在MongoDB中的嵌套数组中获取子文档?

如何从嵌套数组 mongodb 中获取单个匹配的文档?

如何更新 MongoDB 文档中的特定嵌套数组

如何使用mongodb聚合转换嵌套数组中的文档

MongoDB - 如何从嵌套数组中的元素中删除字段?

在MongoDB中更新嵌套数组文档

如何限制在mongodb中返回的嵌套数组字段

如何使用C#驱动程序删除mongodb文档中的嵌套数组元素

如何在MongoDB中更新嵌套数组中的数据

重命名($ project)数组中的字段-MongoDB

如何在嵌套数组中实现多字段更新

如何在嵌套数组中添加新字段

MongoDB:重命名集合中的字段(文档和子文档)

MongoDB:如何在嵌套数组中插入对象?

如何在MongoDB中更新多层嵌套数组?

如何在mongodb中查询对象的嵌套数组?

如何在mongoDB或Mongoose中更新嵌套数组的值

如何在 MongoDB 中对嵌套数组进行排序?

如何在MongoDB中的$ group内创建嵌套数组?

如何在mongodb中检索嵌套数组的单个元素?

如何重命名MongoDB输出中的字段?

MongoDB如何在文档的嵌套数组上搜索

从数组中为集合的所有文档重命名字段-MongoDB