c# - 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 会在一两行中实现这一点。
我想我可以写一些助手来更简洁地实现这一点,但是有没有现成的助手呢?我将接受内置于驱动程序或第三方库中的示例。
提前致谢!
解决方案
正是我编写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();
}
}
}
推荐阅读
- r - 在 hugo-academic 中使用 rmd 的特色图片
- python - Pandas:搜索子字符串是否包含字典中的键,并返回值
- angular - 重新使用角度组件
- javascript - javascript中弹出模式的问题不起作用
- ios - 如何为另一个 ViewController 关闭 PopViewController
- php - PHP脚本上的“安全连接失败”SSL错误取决于GET参数?
- apache-spark - 如何在 Avro 中从 S3 读取不同的分区格式到 Spark?
- architecture - gem5模拟器中的spec 2006基准程序
- java - 字母数字字段的字符串增量适用于 JPA 不起作用
- java - 如何使用 chrome 选项启动 chromebrowser?