首页 > 解决方案 > MongoDB C# 驱动程序:以不那么冗长的方式进行更新?

问题描述

我目前正在使用 MongoDB 和 C# 驱动程序与之交互。查询和插入非常容易,但更新对我来说显得冗长且不直观。这是我刚刚写的一个例子:

        var filter = new FilterDefinitionBuilder<Team>()
            .Where(t => t.Id == existingTeam.Id);
        var update = new UpdateDefinitionBuilder<Team>()
            .Set(t => t.DisbandedTime, DateTime.Now);
        _Repository.Teams.UpdateOne(filter, update);

我觉得我可能遗漏了一些东西,因为大多数 ORM 会在一两行中实现这一点。

我想我可以写一些助手来更简洁地实现这一点,但是有没有现成的助手呢?我将接受内置于驱动程序或第三方库中的示例。

提前致谢!

标签: c#mongodb

解决方案


正是我编写MongoDB.Entities的原因,您可以使用它执行以下操作:

using MongoDB.Entities;
using System;

namespace StackOverflow
{
    public class Team : Entity
    {
        public DateTime DisbandedTime { get; set; }
    }

    public class Program
    {
        private static void Main(string[] args)
        {
            new DB("test", "localhost");

            DB.Update<Team>()
              .Match(t => t.ID == "xxxxxxxxxxx")
              .Modify(t => t.DisbandedTime, DateTime.Now)
              .Execute();

            //builder method alternative
            DB.Update<Team>()
              .Match(t => t.ID == "xxxxxxxxxxx")
              .Modify(b => b.CurrentDate(t => t.DisbandedTime))
              .Execute();
        }
    }
}

推荐阅读