MongoDB 包含串联字符串的 C# 驱动程序更新集合

MongoDB C# Driver Update Collection with Concatenated string

如何使用 C# 驱动程序将此 SQL 转换为 MongoDB 查询

UPDATE  dbo.MyTable SET ConcatField = CONCAT(Field1, Field2, Field3, Field4, Field5)
WHERE Id = 21 

使用 MongoDB.Driver 2.2.3.3

我需要 Mongo使用 BsonDocument 类型的数据库查询,我的 Mongo 集合没有强类型,因为集合不是基于固定模式。

尝试这样的事情

var items = myCollection.FindSync(filter).ToList();
                foreach (var item in items)
                {
                    UpdateDefinition<BsonDocument> updateDefinition =
                        new BsonDocumentUpdateDefinition<BsonDocument>(item.Merge(ListOfStrinForSelectedFields.ToBsonDocument()));
                    myCollection.UpdateManyAsync(filter, updateDefinition);
                }

这将是我的 Shell 脚本

var cursor = db.MyCollection.find({ "Id": 21 }), // Or what ever your find conditions is 
    bulkUpdateOps = [];

cursor.forEach(function(doc){ 
    var ConcatField = doc.Field1 + doc.Field2 + doc.Field3 ;
    bulkUpdateOps.push({ 
        "updateOne": {
            "filter": { "_id": doc._id },
            "update": { "$set": { "MyConCatField": ConcatField  } }
         }
    });

    if (bulkUpdateOps.length == 1000) {
        db.MyCollection.bulkWrite(bulkUpdateOps);
        bulkUpdateOps = [];
    }
});         

if (bulkUpdateOps.length > 0) { db.MyCollection.bulkWrite(bulkUpdateOps); }

然后使用来自 MongoDatabase 的 RunCommandAsync 方法在 c# 中执行它。

var result = await mongoDatabase.RunCommandAsync<BsonDocument>(BsonDocument.Parse(command));

注意:您必须使用管道修改命令字符串并将其解析为 BsonDocument。