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。
如何使用 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。