带有聚合管道的MongoDB C#驱动程序更新文档

杰拉尔多·内托(Geraldo Neto)

如上所述这里MongoDB的4.2上,可以更新聚合管道文件

这意味着现在可以表达“基于当前字段值的条件更新或使用另一个字段的值更新一个字段”。

例如:

db.members.update(
   { },
   [
      { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ], lastUpdate: "$$NOW" } },
      { $unset: [ "misc1", "misc2" ] }
   ],
   { multi: true }
)

我的问题是:如何在C#上使用MongoDB做到这一点

米克尔

IMongoCollection的UpdateManyUpdateDefinition<T>作为第二个参数,PipelineUpdateDefinition是派生的类之一。到目前为止,尚无表达式树支持,但您可以利用BsonDocument类:

IMongoCollection<BsonDocument> col = ...;
var pipeline = new EmptyPipelineDefinition<BsonDocument>()
                    .AppendStage("{ $addFields : { " +
                                        "status : 'Modified'," +
                                        "comments: [ '$misc1', '$misc2' ]," +
                                        "lastUpdate: '$$NOW' " +
                                    "} }",
                        BsonDocumentSerializer.Instance)
                    .AppendStage("{ $project : { 'misc1':0, 'misc2':0 } }",
                    BsonDocumentSerializer.Instance);

col.UpdateMany(new BsonDocument(), pipeline);

它执行以下命令(来自MongoDB驱动程序的跟踪):

"updates" : [
    { 
        "q" : { }, 
        "u" : [
            { "$addFields" : { "status" : "Modified", "comments" : ["$misc1", "$misc2"], "lastUpdate" : "$$NOW" } }, 
            { "$project" : { "misc1" : 0, "misc2" : 0 } }], 
        "multi" : true }
    }
]

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试使用MongoDB Java驱动程序更新文档

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

使用MongoDB和C#新驱动程序版本(2.0)更新集合中的嵌入式文档

MongoDB C#驱动程序2.0-更新文档

MongoDB C#驱动程序超时

mongodb C#驱动程序更新多个字段

Mongodb通过C#驱动程序使用多个字段匹配更新嵌入式文档

MongoDB C#驱动程序CancellationToken

使用MongoDB和C#新驱动程序版本(2.0)更新嵌入式文档属性

如何使用C#驱动程序更新MongoDB数组中的子文档

Mongodb:将文档树反向作为视图(使用C#驱动程序)

使用C#驱动程序的MongoDB更新阵列

MongoDB C#驱动程序-更新嵌入式文档数组中的所有字段

如何使用MongoDB C#驱动程序聚合$ lookup?

如何使用mongodb C#驱动程序获取子文档的集合?

MongoDb C#驱动程序可以与LINQ和动态文档一起使用吗?

mongodb c ++驱动程序无法更新

如何使用C#驱动程序更新MongoDB中数组子文档中包含的数组子文档中的字段?

使用C#驱动程序在mongodb中查找计算值最高的文档

如何在MongoDB C#驱动程序中按值的字段范围选择文档?

MongoDB C#官方驱动程序批量更新

是否使用C#驱动程序可用于MongoDB的文档验证器?

MongoDB聚合查询通过C#驱动程序变慢

使用 .Net 驱动程序异步更新或插入 MongoDB 文档

Mongodb C# 驱动程序只返回数组中匹配的子文档

带有 C# 驱动程序的 MongoDB - 带有排序的日期格式

用于更新的 Mongo Db 驱动程序 C# 聚合

无法使用 NodeJS MongoDB 驱动程序更新文档

通过 C# MongoDB 驱动程序聚合查询结果