[英]Mongo Db C# Driver Method to create new computed fields
我需要为所有现有文档创建新字段,以存储小写值emailAddress(这是一个现有字段)。
await _mongoHelper.MongoDatabase.GetCollection<T>("users").UpdateOneAsync(
(Builders<T>.Filter.Eq("userId", userId)),Builders<T>.Update.Set("fieldInLower", new BsonDocument(new BsonElement("toLower", "$firstName")))).ConfigureAwait(false);
)
结果是:
"fieldInLower" : {
"toLower" : "$firstName"
}
从MongoDB的服务器V4.2可以使用聚合流水线阶段的描述指的是现有油田开始在这里 。
下面的示例c#代码使用'MongoDB.Entities'进行相同的操作,与官方驱动程序相比,这是一种更方便的方法。
using MongoDB.Entities;
namespace StackOverflow
{
public class Program
{
public class User : Entity
{
public string Email { get; set; }
}
private static void Main(string[] args)
{
new DB("test");
var user = new User { Email = "Email@Domain.Com" };
user.Save();
DB.Update<User>()
.Match(u => u.ID == user.ID)
.WithPipelineStage("{ $set: { LowerCaseEmail: { $toLower: '$Email' } } }")
.WithPipelineStage("{ $unset: 'Email'}") //if you need to remove the original field
.ExecutePipeline();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.