繁体   English   中英

Mongo Db C#驱动程序方法来创建新的计算字段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM